Pagina principala » HOWTO » Pot rula un fișier Batch Windows fără o comandă de comandă vizibilă?

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

    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 web Q & A.

    Intrebarea

    Cititorul de super-utilizatori 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 are rolul de a lansa 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 promptă 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ă când fișierul lot iese.

    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 lot pentru a rula orice program cu start comanda. În mod implicit, start se întoarce imediat, fără a aștepta ieșirea programului, așa că fișierul lot va continua să ruleze și, probabil, va ieși imediat. Cuplați cu modificarea comenzii rapide pentru a rula fișierul batch minimizat și veți vedea doar bara de activități bliț fără să vedeți chiar o fereastră pe ecran.

    Un avertisment pentru aceasta este că, dacă executați un program în modul consola, pe care mulți interpreți de script-uri sunt, fișierul lot va aștepta ieșirea programului și utilizarea start va produce o nouă fereastră de consolă. Ceea ce trebuie să faceți în acest caz este rularea versiunii Windows a interpretului în loc de consola pe bază - nu start necesar. Pentru Perl, ai alerga wperl.exe in loc de perl.exe. Pentru Python, este pythonw.exe in loc de python.exe. Vechea distribuție Win32 Ruby pe care am descărcat-o are rubyw.exe, care ar trebui să facă același lucru.

    O posibilitate finală este să utilizați un instrument terță parte 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 subliniază modul în care puteți utiliza un Visual Basic Script pentru a merge dincolo de minimizarea vizibilității și a ascunde complet promptul CMD. În acest fir, Harry MC explică:

    Soluția 1:

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

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

    Pentru a executa invizibil orice program sau fișier batch, 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") Executaț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 tăcere 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.