If-Koubou

Pot rula un fișier batch Windows fără o comandă vizibilă?

Pot rula un fișier batch Windows fără o comandă vizibilă? (Cum să)

Fișierele batch sunt o modalitate la îndemână de a executa o serie de comenzi în Windows, dar există oricum să le executați invizibil în fundal? Aflați mai multe despre cum.

Sesiunea de întrebări și răspunsuri din ziua de astăzi vine de la amabilitatea SuperUser - o subdiviziune a Stack Exchange, o grupare bazată pe comunitate a site-urilor Q & A.

Intrebarea

Cititorul de super-aplicații Jake dorește să ruleze invizibil un fișier BAT, scrie:

Am instalat o bijuterie de rubin numită Redcar, care este lansată din linia de comandă. Când rulează, fură shell-ul până când se termină, așa că trebuie să creez o nouă fereastră de shell pentru a continua să lucrez în linia de comandă. Coaja pe care o folosesc este shell-ul GITBash de la MySysGit.

Am găsit un fișier Redcar.bat, care este menit să lanseze Redcar ca o comandă rapidă, presupun, dar nu vreau ca fereastra de comenzi suplimentare să se deschidă ori de câte ori lansez fișierul BAT.

Cum pot rula BAT fără a vedea promptul?

Există o soluție pentru dorința rapidă a lui Jake?

Raspunsurile

Contribuitorul super-utilizator Afrazier răspunde cu o combinație de veste proastă și bună:

Nu puteți executa un fișier batch cu built-in Command Prompt va păstra o fereastră deschisă până la ieșirea fișierului lot.

Ce ești tu?poate sa faceți pașii pentru a vă asigura că fișierul lot iese cât mai curând posibil. Dacă este posibil, modificați fișierul batch pentru a rula orice program custart comanda. În mod implicit,startse întoarce imediat, fără a aștepta ieșirea programului, astfel încât fișierul lot va continua să ruleze și, probabil, să iasă imediat. Cuplați că, modificând comanda rapidă pentru a rula fișierul batch minimizat, veți vedea numai bara de activități, fără să vedeți chiar o fereastră pe ecran.

O avertizare pentru aceasta este că, dacă executați un program în modul consola, pe care mulți interpreți de script-uri o au, fișierul lot va aștepta ieșirea programului și utilizareastart va produce o nouă fereastră a consolei. Ceea ce trebuie să faceți în acest caz este rularea versiunii Windows a interpretului în locul celei bazate pe consola - nustart necesar. Pentru Perl, ai fugiwperl.exe in loc deperl.exe. Pentru Python, estepythonw.exe in loc depython.exe. Vechea distribuție Win32 Ruby pe care am descărcat-o arerubyw.exe, care ar trebui să facă același lucru.

O posibilitate finală este să utilizați un instrument al unei terțe părți pentru a rula comanda de comandă cu o fereastră ascunsă. Am auzit de astfel de lucruri, dar nu le-am folosit niciodată, așa că nu știu nimic în special să vă spun.

Cititorii l-au atras, de asemenea, la un alt fir SuperUser care evidențiază modul în care puteți utiliza un Visual Basic Script pentru a depăși diminuarea vizibilității și pentru a ascunde promptul CMD. În acel fir, Harry MC explică:

Soluția 1:

Salvați acest rând de text ca fișierinvisible.vbs:

CreateObject ("Wscript.Shell") Rulați "" "& WScript.Arguments (0) &" "" ", 0, False

Pentru a executa invizibil orice program sau fișier de lot, utilizați-l astfel:

wscript.exe "C: \ Wherever \ invisible.vbs" "C: \ Unele alte locuri \ MyBatchFile.bat"

De asemenea, pentru a putea transmite / transmite o listă de argumente, utilizați numai două ghilimele duble

CreateObject ("Wscript.Shell") Rulați "" & WScript.Arguments (0) & "", 0, False

de exemplu: Invisible.vbs "Kill.vbs ME.exe"

Soluția 2:

Utilizați un instrument de linie de comandă pentru a lansa în mod silențios un proces: Quiet.

Folosirea oricăruia dintre soluțiile de mai sus, bazată pe nivelul dvs. de confort, utilizând sau nu VBS și altele, va reduce la minimum vizibilitatea ferestrei CMD sau va elimina complet.

Aveți ceva de adăugat la explicație? Sunați în comentariile. Doriți să citiți mai multe răspunsuri de la alți utilizatori de tehnologie Stack Exchange? Check out discuția completă aici.