سؤال كيفية تشغيل ملف دفعي دون إطلاق "نافذة الأوامر"؟ [مكرر]


هذا السؤال لديه بالفعل إجابة هنا:

في نظام التشغيل Windows XP ، هل يمكنني تشغيل ملف دفعي (.bat أو .cmd) ، عبر اختصار ، بدون "نافذة سوداء"؟


122
2018-05-11 17:31


الأصل


هل تسأل ما إذا كان يمكنك منع إطار الأوامر من الظهور عند تشغيل ملف الخفافيش؟ - Eric
نعم ، يمكنك بسهولة تغيير اللون الافتراضي لإطار الإخراج باستخدام الخصائص على اختصار cmd.exe. (نعم هذه مزحة ...) - Toby J


الأجوبة:


احفظ التالي wscript ، على سبيل المثال ، hidecmd.vbs بعد استبدال "testing.bat" باسم ملف دفعي الخاص بك.

Set oShell = CreateObject ("Wscript.Shell") 
Dim strArgs
strArgs = "cmd /c testing.bat"
oShell.Run strArgs, 0, false

المعلمة الثانية من oShell.Run هو intWindowStyle القيمة التي تشير إلى مظهر نافذة البرنامج وقيمة الصفر هي للإطار المخفي.

المرجع هنا http://msdn.microsoft.com/en-us/library/d5fk67ky.aspx 


83
2018-05-11 19:55



هل سيكون السطر الثالث: strArgs = "cmd / c FILEPATH \ test.bat"؟ - Dan Z
أي طريقة لتشغيل الخفافيش في وضع مرتفع في حين لا تزال غير مرئية؟ - Laurens Swart
كيفية تشغيل .bat ملف باسم administartor باستخدام هذه الطريقة؟ - Mehdi Dehghani


هذا مجرد تبسيط لإجابة شاجي. يمكنك تشغيل البرنامج النصي دفعة من خلال فبسكريبت (.vbs) مثل هذا البرنامج النصي:

'HideBat.vbs
CreateObject("Wscript.Shell").Run "your_batch_file.bat", 0, True

سيؤدي هذا إلى تنفيذ ملف الدُفعات الخاص بك دون ظهور أي إطار أوامر.


41
2018-02-15 09:52



كيفية تشغيل .bat الملف كمسؤول باستخدام هذه الطريقة؟ - Mehdi Dehghani


فقط للتوسع في إجابات "استخدام Windows Scripting" (والتي أعتبرها أفضل لأنها مدمجة بالفعل) إليك كيفية القيام بذلك باستخدام برنامج ملحقة ملحقة واحدة وتمرير اسم ملف الدُفعات "الحقيقي" كمعلمة. سيتم تمرير معلمات إضافية إلى ملف الدُفعات.

If WScript.Arguments.Count >= 1 Then
    ReDim arr(WScript.Arguments.Count-1)
    For i = 0 To WScript.Arguments.Count-1
        Arg = WScript.Arguments(i)
        If InStr(Arg, " ") > 0 Then Arg = """" & Arg & """"
      arr(i) = Arg
    Next

    RunCmd = Join(arr)
    CreateObject("Wscript.Shell").Run RunCmd, 0, True
End If

على سبيل المثال احفظ الملف أعلاه باسم NoShell.vbs في مكان ما اتصل على:

NoShell.vbs c:\foo\my_batch_file.bat

وأخيرًا ، إذا كنت تريد تشغيل هذا من مكان ما لا يفهم ملف .vbs (مثل "أدوات خارجية" في Visual Studio) ، فستحتاج إلى الاتصال C:\Windows\System32\wscript.exe مع ملف vbs كمعلمة الأول وملف دفعي الخاص بك كـ الثاني.


19
2018-01-10 17:50



بالنسبة لأولئك الذين يكرهون فكرة ومفهوم الحاجة إلى إنشاء ملف vbs جديد لكل ملف bat جديد يخلق ، يجب على المرء أن يستخدم الحل الأمثل. بدلاً من ملفات vbs متعددة ، سيكون لديك اختصارات متعددة. لكل ملف bat جديد ، قم بإنشاء اختصار لملف vbs ، انقر بزر الماوس الأيمن فوقه ، واختر خصائص> علامة التبويب اختصارات ، وفي المربع Target أدخل مسار ملف bat بعد المسار الموجود بالفعل ، تمامًا كما هو موضح أعلاه أو مثل هذا إذا لم يكن الاختصار في نفس مكان ملف vbs: "C:\My Files\HideCmd.vbs" c:\foo\my_batch_file.bat. - Rolo
إذا كان مسار ملف bat يحتوي على مسافة ، كيف يمكن دعوته عبر اختصار إلى ملف vbs؟ فمثلا: "C:\My Files\HideCmd.vbs" c:\my things\my_batch_file.bat. بغض النظر عن ما أحاوله للمسار - اقتباسات مزدوجة حول كل شيء ،٪ 20 بدلاً من الفراغ ، أو مزيج من هذين ، لا شيء يعمل. أتلقى رسالة خطأ تخبرني أنه لا يمكن العثور على الملف أو لا يحدث شيء. هل يرجع ذلك إلى خطأ المستخدم في نهايتي ، أو تقييد Windows مع حقل الهدف للاختصارات ، أو مشكلة في البرنامج النصي vbs الذي لا يتعامل مع مسارات الملفات مع المساحات بشكل صحيح؟ - Rolo
Rolo لقد قمت بتحديث البرنامج النصي بحيث إذا كان أي من المعلمات الواردة لها فراغات ، فسوف تحيطها بعلامات اقتباس. لذلك سترغب في التفاف المسار إلى الملف الدفعي مع علامات اقتباس عند الاتصال به ، ثم سيتم اعتبارها وسيطة واحدة وإعادة التفاف قبل أن يتم استدعاؤها. - Toby J


يمكنك تغيير خصائص الاختصار للتشغيل المصغر.

لتشغيله بشكل خفي تمامًا ستحتاج إلى شيء آخر مثل Windows Scripting.


9
2018-05-11 19:50



اقتراحك الأول هو الطريقة التي كنت دائما أفعلها. - martineau


استعمال بداية مع خيار "/ B". فمثلا:

@echo off
start /B go.bat

8
2018-05-11 17:36



start /bسيقوم بتشغيل البرنامج في وحدة التحكم المخصصة حاليًا بدلاً من إنشاء عنصر جديد. سوف تحصل على واحدة جديدة على أي حال لأن الدفعة يجب أن تعمل مع cmd (والتي بدورها [مفاجأة] ، تفتح وحدة تحكم). - Joey
@ نعم نعم ، ولكن هذا مفيد جدا لإطلاق الملفات الدفعية من التطبيقات الأخرى من خلال تنفيذ shell (مثل SYSTEM في C / C ++). - Tomáš Zato
@ TomášZato: يمكنك فقط استدعاء الملف الدفعي مباشرة في هذه الحالة ، أو ، إذا كان كل ما تستخدمه لتوليد عملية لا يؤدي إلى إنشاء قذيفة أولاً ، استخدم cmd /c foo.cmd. ليس هناك حاجة على الإطلاق للاستخدام start في هذه السيناريوهات ، وأنا أقول ذلك system لا ينبغي استخدامها لصالح CreateProcess. من خلال إطلاق ملف دفعي ، فأنت تعتمد على نظام أساسي واحد بالفعل ، ويمكنك كذلك استخدام الأدوات الأفضل للمهمة. - Joey
Joey شكرا حفنة ، لم يسمع من قبل cmd /c قبل. الأمر cmd هو ما أحتاجه في حالتي ، ولكن كل إجابات stackexchange التي وجدتها حتى الآن ، حول ملف دفعي يشغل ملف دفعي آخر ، لديك أجوبة أعلى لاستخدام البداية ... - T_D
start /b go.bat  سوف لن تخصيص وحدة تحكم جديدة (على سبيل المثال ، نسخة conhost.exe - أو مؤشر ترابط في csrss.exe قبل Windows 7). ومع ذلك فإنه سوف يجعل فوضى منذ يتم تشغيل البرنامج النصي الدفعي مع مثيل جديد من cmd.exe التي تعلق على نفس وحدة التحكم. سوف تتنافس كلتا الحالتين على قراءة المدخلات من وحدة التحكم ، وعادة ما تتناوب. يحتاج /w (على سبيل المثال start /b /w go.bat) من أجل الانتظار على المثيل الثاني ، وهو يشبه استخدام cmd /c في حالة استخدام system. أيضا ، إذا كنت تتصل CreateProcess، يركض go.bat مباشرة. ليس هناك حاجة ل cmd /c. - eryksun


GPL مفتوحة المصدر الحرة "إنشاء عملية خفية"

http://www.commandline.co.uk/chp/

Microsoft Security Essentials ، وربما معظم برامج مكافحة الفيروسات / البرامج الضارة الأخرى ستتعامل مع الملف القابل للتنفيذ ، chp.exe ، كفيروس لأنه يخفي أياً كان البرنامج الذي تحدده من عرض نافذة أو زر شريط المهام ، تماماً كما تفعل الفيروسات.

إنه ليس فيروس. لا يخفي العملية المستهدفة من الظهور في مدير المهام على سبيل المثال. وبالطبع ، يتم تضمين شفرة المصدر حتى تتمكن من رؤية أنها صغيرة جدًا ولا تفعل أي شيء سوى تشغيل أي برنامج تقوم بإعطائه.

ليس عليك حتى أن تثق في أن chp.exe المضمنة قد تم بناؤه بالفعل من هذا المصدر. يمكنك المضي قدمًا وتجاهل chp.exe المضمنة وتجميع الملفات الخاصة بك من المصدر ، وكل الأدوات اللازمة للقيام بذلك تكون مجانية وقابلة للتنزيل.


يمكنك أيضًا إنشاء اختصار لملف .bat أو .cmd ، ثم النقر بزر الماوس الأيمن على الاختصار ، أو Properties ، أو علامة التبويب Shortcut ، أو Run: Minimized. ثم في المهام المجدولة ، استخدم الاختصار بدلاً من ملف .bat / .cmd مباشرةً. سيؤدي ذلك إلى منع ظهور نافذة ، ولكن سيظل يظهر زر شريط المهام.


6
2017-10-22 21:17





استعمال بداية خفية  (تكلف 20 دولارًا)

بدء مخفي - تشغيل التطبيقات والملفات الدفعية بدون إطار وحدة التحكم أو موجه UAC

يتم تشغيل تطبيقات وحدة التحكم والملفات الدفعية بشكل منتظم عند بدء تشغيل Windows أو في جدول. الإزعاج الرئيسي لهذا هو أن كل تطبيق يفتح نافذة وحدة التحكم التي تومض على الشاشة. Hidden Start (أو Hstart) هي أداة مساعدة لسطر الأوامر خفيفة الوزن تسمح لك بتشغيل تطبيقات وحدة التحكم والملفات الدفعية بدون أي نافذة في الخلفية ، والتعامل مع ارتفاع امتياز UAC تحت Windows 7 و Vista ، وبدء عدة أوامر بالتوازي أو بشكل متزامن ، وأكثر من ذلك بكثير .

enter image description here


5
2018-05-12 16:03



هذا هو تطبيق مصمم بشكل جيد جدا ومفيد. - Guru Josh


يمكنك استخدام نافذة البرمجة مثل أوتويت.

كمثال ، فقط اكتب هذا إلى محرر البرنامج النصي AutoIt. انها بسيطة الى حد ما

Run("C:\test\batchfile.bat", "", @SW_HIDE)

إذا كنت تريد تشغيلها في حلقة ،

$x=0
Do
 Run("C:\test\batchfile.bat", "", @SW_HIDE)
 Sleep(5000)
Until $x = 1

قم بتجميعه كملف .exe - وانت القيام به.


وبالمثل ، في أوتوهوتكي:

#NoTrayIcon ; To prevent momentary icon pop-up
run whatever.bat arg1 arg2,,hide 

5
2018-05-29 03:48





حل بسيط ، دون استخدام أي برامج إضافية.

  1. قم بإنشاء ملف الدُفعات الذي تريد تنفيذه واختباره.
  2. Creata اختصار لذلك!
  3. تحرير خصائص الاختصار: في علامة التبويب اختصار ، اختر تشغيل التصغير. Assing مفتاح ساخن لذلك الخاص بك والقيام به!

حظا سعيدا!


4
2017-10-27 08:23



هذا ليس حلا لمشكلة البروتوكول الاختياري. هناك فرق بين التقليل و إخفاء - nixda
إذا قمت بتغيير اختصار لاستخدام الرمز الصحيح ، فإن البداية المصغرة على شريط المهام هي في الواقع تذكير شيء ما بدأ. - Whoever
هذا هو حل جميل ونظيف ل لي مشكلة! شكرا لكم! - dmitry_romanov
التقليل من ... هيه. - gumuruh