it-swarm.asia

قم بتشغيل ملف دفعي بطريقة مخفية تمامًا

أنا أبحث عن طريقة لتشغيل ملف دفعي (.bat) دون أي شيء مرئي للمستخدم (لا توجد نافذة أو اسم شريط المهام ، إلخ.).

لا أريد استخدام بعض البرامج للقيام بذلك ، أبحث عن شيء أكثر نظافة. لقد وجدت حلاً يستخدم VBScript ، لكنني لا أحب استخدام VBS أيضًا.

130
Moayad Mardini

الحل 1:

احفظ سطر النص هذا كملف invisible.vbs:

CreateObject ("Wscript.Shell"). تشغيل "" "" & WScript.Arguments (0) & "" "" ، 0 ، خطأ

لتشغيل أي برنامج أو ملف دفعي بشكل غير مرئي ، استخدمه مثل هذا:

wscript.exe "C:\Wherever\invisible.vbs" "C:\Some Other Place\MyBatchFile.bat"

لكي تكون قادرًا على تمرير/ترحيل قائمة الوسائط ، استخدم علامتي اقتباس مزدوجتين فقط

CreateObject ("Wscript.Shell"). تشغيل "" & WScript.Arguments (0) & ""، 0، False

مثال: Invisible.vbs "Kill.vbs ME.exe"

الحل 2:

استخدم أداة سطر الأوامر لإطلاق عملية بصمت: Quiet ، hidecon أو hideexec .

112
harrymc

لإخفاء الملفات الدفعية أو ملفات الأوامر أو أي ملفات .... استخدم Windows XP المدمج في أداة IExpress.exe لإنشاء .EXE خارج ملف الدُفعات. عند استخدام IExpress ، تأكد من تحديد الخيار "تشغيل مخفي" وحدد جميع المربعات حول عدم إظهار أي شيء. بعد قيامك بإنشاء. exe ، ضعه في مجلد أوامر التشغيل الذي تختاره ولن تشاهده.

25
Paul Cheselske

استخدام Cmdow هو أداة مساعدة لسطر الأوامر Win32 لـ NT4/2000/XP/2003 تسمح بإدراج النوافذ أو نقلها أو تغيير حجمها أو إعادة تسميتها أو إخفاءها/إخفاءها/تعطيلها/تمكينها أو تصغيرها أو تكبيرها أو استعادتها أو تنشيطها/تنشيطها ، مغلقة ، قتل وأكثر من ذلك.

قم بتشغيل ملف دفعي مخفي تمريره المعلمات: -

cmdow/run/hid mybat arg1 "arg 2"

8
joe

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

الايجابيات:

 No Command Window
 Ability to use an icon
 Same Functionality of bat file

سلبيات:

 Limited to one line, so many characters
8
Jack S

قم بتشغيل البرنامج النصي من خلال وظيفة في مكان ما دون جعله تفاعليًا:

at 11:00 script.bat

حل آخر ، إذا كنت لا تمانع في تثبيت شيء مثل Python ، يمكنك ببساطة إنشاء برنامج نصي وتشغيله مع pythonw (الإصدار المرتبط لعمليات واجهة المستخدم الرسومية). نظرًا لأنك لا تستخدم أي واجهات برمجة تطبيقات رسومية ، فلن تظهر النافذة. ما عليك سوى استخدام المكالمات إلى os.system() وسيحاكي البرنامج النصي الدفعي ، كما هو الحال في كتابة السلاسل في سطر الأوامر.

مثال:

import os

os.system("tasklist > C:\tasks.txt")
os.system("ipconfig /all > C:\netinfo.log")
7
John T

أنا لا أحب حل VBScript.

قم بتنزيل ونسخ nircmd.exe إلى مجلد %systemroot%\system32 الخاص بك ، ثم أضف هذا الأمر إلى السطر الأول من مجموعتك:

nircmd.exe win hide ititle "cmd.exe"

أو اجعل عنوان الدُفعات مخصصًا أولاً باستخدام أمر title لتجنب إخفاء جميع نوافذ cmd ، مثل هذا:

title MyBatch
nircmd.exe win hide ititle "MyBatch"
5
BijaN-R

يمكنك تشغيله التقليل بسهولة.

start /MIN batch.cmd
5
Brad Gilbert

باستخدام Windows7 ، يمكنك استخدام لوحة التحكم "المهمة المجدولة" لجدولة ملف دفعي ليتم تشغيله في الخلفية بشكل غير مرئي باستخدام الأذونات المحددة وحتى كحساب "SYSTEM". انظر قطة أدناه:

enter image description here

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

5
djangofan

سيقوم المحول الممتاز Bat To Exe بتحويل ملف .bat أو .cmd إلى ملف .exe.

لديها واجهة مستخدم بسيطة. يمكنك اختيار عدم وجود نافذة وحدة تحكم عن طريق تحديد خيار "تطبيق غير مرئي". أيضًا ، يسمح لك بتعيين رمز وحزم الملفات المقترنة وعدة خيارات أخرى.

إليك لقطة شاشة لإطار الواجهة الرئيسية:

 
لاحظ أن هذه الصورة قديمة. يعرض الإصدار 2.4.8 ، واعتبارًا من سبتمبر 2018 ، يقدم موقع الويب الإصدار 3.0.10.0 (آخر تحديث 2018-03-23).

تحذير: يرتبط موقع الويب www.f2ko.de بـ coinhive.com ، وهو على نطاق واسعتم تحديدهكمابرامج ضارة .

3
BullyWiiPlaza

YET ANOTHER ، من C/C++ ، هي استخدام الدالة CreateProcess مع علامة CREATE_NO_WINDOW. لديها الكثير من الطاقة الإضافية غير المبينة هنا. هذا هو الحد الأدنى الذي تحتاجه لاستبدال النظام () أو عائلة _ spawn ().

STARTUPINFO si;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);

PROCESS_INFORMATION pi;
ZeroMemory( &pi, sizeof(pi) );

// Spawn creates a cmd.exe window.  CreateProcess doesn't.
//if ( _spawnl( _P_WAIT, szFileNameBAT, szFileNameBAT, NULL ) ) {  
if ( !CreateProcess( szFileNameBAT, szFileNameBAT, NULL, NULL, false,
                     CREATE_NO_WINDOW, NULL, NULL, &si, &pi  ) ) {
  MyErrorFunc( "CreateProcess( \"%s\" ): %d", szFileNameBAT, GetLastError() );
  goto MyErrorHandling;
}

WaitForSingleObject( pi.hProcess, INFINITE );

CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
3
Swiss Frank

يمكنك أيضًا إنشاء AutoHotkey script:

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

يبدو أن شخصًا ما قدّم قائمة بالطرق 7-8 لتشغيل "الصمت":

http://forums.techguy.org/dos-other/644932-solved-howto-run-batch-file.html

3
Rolnik

لقد فعلت ذلك بنجاح مع nircmd بهذه الطريقة:

  1. قم بتنزيل nircmd.exe من الرابط
  2. إنشاء ملف .bat الخاص بك
  3. السطر الأول من ملف .bat يجب أن يكون هذا: nircmd.exe win hide ititle "cmd.exe"
  4. حدد كلا الملفين وقم بإنشاء ملف استخراج ذاتي باستخدام برنامج winrar
  5. في علامة التبويب "عام" ، حدد مربع "إنشاء ملف استخراج تلقائي"
  6. في علامة التبويب "تقدم" حدد زر "النص التلقائي"
  7. هناك نافذة جديدة وحدد علامة التبويب "الوضع" ثم حدد الخيار: "إخفاء كل شيء"
  8. حدد علامة التبويب "تحديث" وحدد خيار "الكتابة فوق الملفات الموجودة"
  9. حدد علامة التبويب "عام" وحدد مجلد وجهة للاستخراج إذا كنت ترغب في ذلك ، وفي المربع "Excecute بعد الاستخراج" ، اكتب المسار الكامل حيث سيتم استخراج ملف .bat. على سبيل المثال: إذا قمت بتحديد مجلد الاستخراج كـ: "c:\windows \" فإن المسار الكامل للتخلص بعد الاستخراج سيكون: "c:\windows\file.bat" (في حالة تسمية ملف .bat الخاص بك: file.bat )
  10. انقر فوق قبول على جميع النوافذ

الآن سيكون لديك ملف. exe بعد النقر فوقه فوقه وتثبيته ، سيتم تشغيل .bat الخاص بك مخفيًا تمامًا.

2
ZEUS

إضافة إجابتي هنا من آخر post لأنه كان مكررًا ولا أرى هذا الحل هنا ، فهناك الآن 17 إجابة مختلفة عن كيفية تشغيل ملف دفعي مخفي. سأحذف إجابتي على هذا المنشور في وقت ما في المستقبل القريب.

قم بإنشاء البرنامج النصي للدُفع باستخدام منطق الدُفعات والأوامر فيه ، ثم أنشئ ملفًا جديدًا بامتداد .VBS ، واستخدم المنطق أدناه (المثال الذي قدمته أدناه) ، وقم فقط بتوصيل المسار الكامل إلى ملف .CMD أو .BAT الخاص بك باستخدام PING -t <IPAddress> ، أوامر إلخ ، بحيث يتم تنفيذ الدُفعة بطريقة مخفية لا تُظهر نافذة الأوامر عند تنفيذها.

حيث يحدد المنطق الوارد في المثال أدناه C:\Folder\BatchFileName.cmd ، قم بتغيير ذلك للإشارة إلى البرنامج النصي الدفعي باستخدام الأوامر التي تقوم بتشغيلها يدويًا ، وما إلى ذلك الآن.

احفظ الملف .VBS وجدولة مع Task Schedulerمشاكل في جدولة مهمة على windows7 لتشغيلها وفق جدول غير مسمى لاحتياجاتك.

خلاف ذلك ، فقط انقر نقرًا مزدوجًا على ملف .VBS لتشغيل الأمر PING اللانهائي الذي تضعه في الملف الدفعي الذي تشير إليه عند الحاجة.

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

مثال VBS SCRIPT RUN COMMAND LINE BATCH HIDING CMD WINDOW

Set WinScriptHost = CreateObject("WScript.Shell")
WinScriptHost.Run Chr(34) & "C:\Folder\BatchFileName.cmd" & Chr(34), 0
Set WinScriptHost = Nothing
1
Pimp Juice IT

هناقمت بتجميع جميع الطرق التي أعرفها لبدء عملية مخفية باستخدام دُفعة بدون أدوات خارجية. مع استعداد لاستخدام البرامج النصية (بعضها غني بالخيارات) ، وكل من لهم شكل سطر الأوامر. حيث من الممكن أيضًا إرجاع PID. الأدوات المستخدمة هي IEXPRESS و SCHTASKS و WScript.Shell و Win32_Process و JScript.Net

1
npocmaka

لا تحتاج إلى القيام بأي شيء خاص.

إذا كنت تقوم بتشغيل الملفات الدفعية من خدمة Windows ، فيجب إخفاؤها افتراضيًا إلا إذا قمت بتمكين خيار "السماح للخدمة بالتفاعل مع سطح المكتب" على الخدمة.

1
sgmoore

على الرغم من أنني أجبت بالفعل هذا هو نهج آخر. المختلف هنا هو أنه يمكن للبرنامج النصي الدفعي إخفاء نفسه أثناء تشغيله. ستحتاج إلى نصين إضافيين على الرغم من - windowMode.bat و getCMDPid.bat (كلاهما يحتوي على كود .net). هنا كيف يمكن بعد ذلك استخدامها:

@echo off
call getCmdPid
call windowMode -pid %errorlevel% -mode hidden

echo this should be written into log despite the cmd window is hidden>log
echo ending the log>>log
exit
1
npocmaka
cmdow /run /hid "file.extention" arg1 "arg 2"
1
malak

كنت بحاجة لإخفاء نافذة ملف دفعي تم استدعاؤه من قائمة سياق Explorer ، وأحتاج أيضًا إلى إضافة علامات اقتباس على المعلمة. لم تنجح أي من الإجابات بالنسبة لي ، لذلك أقوم بإضافة الحل الخاص بي.

لقد كان هذا على "أمر" التسجيل لقائمة سياق Explorer:

cmd /c C:\mypath\myprogram.bat "%1"

لذلك لاستبداله ، كان عليّ إنشاء نسخة vbs مثل هذا:

WScript.CreateObject ("WScript.Shell").run "cmd /c C:\mypath\myprogram.bat """ & WScript.Arguments(0) & """", 0, False

احفظ في مكان مثل C:\mypath\myscript.vbs واسميها بهذا الشكل في السجل:

wscript "C:\mypath\myscript.vbs" "%1"

لاحظ أن مسار .bat لا يمكن أن يحتوي على مسافات ، لذا استبدلها باسم الملف 8.3. لذلك على سبيل المثال ، يجب الإشارة إلى C:\Program Files\myprogram.bat كـ C:\Progra~1\myprogram.bat. لمشاهدة اسم الملف 8.3 ، استخدم dir /x

0
bortao

لقد قمتُ بإنشاء RunApp للقيام بمثل هذه الوظيفة واستخدامها أيضًا في بيئتي الإنتاجية ، آمل أن يكون ذلك مفيدًا.

التكوين مثل أدناه:

file: config.arg

:style:hidden

MyBatchFile.bat
arg1
arg2

واطلق runapp.exe بدلاً من ذلك.

0
James Yang

بدأت أحاول معرفة ذلك ولم ينجح أبدًا. كان هذا أقرب ما حصلت عليه:

@echo off
if not defined PIL (
    set PIL=1
    start /min "" %~0
    exit /b
)
TITLE Hello World
echo Hello world!
pause>nul
0
djangofan

كانت لدي نفس المشكلة ، لكنني برزت بها:
Shell("filehere" & "parametersforbatchfilehere", vbHidden)

0
Alan Panayotov