Kan ik een batch-batchbestand uitvoeren zonder zichtbare opdrachtprompt?
Batchbestanden zijn een handige manier om een reeks opdrachten in Windows uit te voeren, maar is er hoe dan ook om ze onzichtbaar op de achtergrond uit te voeren? Lees verder om erachter te komen hoe.
De Question & Answer-sessie van vandaag komt tot ons dankzij SuperUser - een onderdeel van Stack Exchange, een gemeenschapsgedreven groep van Q & A-websites.
De vraag
SuperUser lezer Jake wil onzichtbaar een BAT bestand draaien, hij schrijft:
Ik heb een robijn edelsteen geïnstalleerd genaamd Redcar, die wordt gestart vanaf de opdrachtregel. Wanneer het wordt uitgevoerd, steelt het de shell totdat het wordt beëindigd, dus ik moet een nieuw shell-venster maken om door te gaan met het uitvoeren van opdrachtregels. De shell die ik gebruik, is de GITBash-shell van MySysGit.
Ik vond een Redcar.bat-bestand dat is bedoeld om Redcar als een snelkoppeling op te starten, neem ik aan, maar ik wil niet dat het extra opdrachtpromptvenster wordt geopend wanneer ik het BAT-bestand start.
Hoe voer ik de BAT uit zonder de prompt te zien?
Is er een oplossing voor Jakes sluipende, prompt verlangen?
De antwoorden
SuperUser-bijdrager Afrazier reageert met een combinatie van slecht en goed nieuws:
U kunt niet - een batchbestand uitvoeren met de ingebouwde opdrachtprompt een venster open laten staan totdat het batchbestand wordt afgesloten.
Wat jij kan doen is het nemen van stappen om ervoor te zorgen dat het batchbestand zo snel mogelijk wordt afgesloten. Wijzig indien mogelijk het batchbestand om welk programma dan ook uit te voeren met de
begin
commando. Standaard,begin
keert onmiddellijk terug zonder te wachten tot het programma wordt afgesloten, dus het batchbestand blijft actief en wordt vermoedelijk onmiddellijk afgesloten. Koppel dat met het aanpassen van uw snelkoppeling om het batchbestand te minimaliseren, en u ziet alleen de taakbalk knipperen zonder zelfs een venster op het scherm te zien.Een waarschuwing is dat als u een consolemodusprogramma uitvoert, dat veel script-interpreters bevat, het batchbestand zal wachten tot het programma wordt afgesloten en gebruikt
begin
zal een nieuw consolevenster openen. Wat u in dit geval moet doen, is de Windows-versie van de interpreter uitvoeren in plaats van de console-gebaseerde versie - neebegin
noodzakelijk. Voor Perl zou je rennenwperl.exe
in plaats vanperl.exe
. Voor Python is dat hetpythonw.exe
in plaats vanpython.exe
. De oude win32 Ruby-distributie die ik heb gedownload, heeftrubyw.exe
, wat hetzelfde zou moeten doen.Een laatste mogelijkheid is om een hulpprogramma van derden te gebruiken om de opdrachtprompt uit te voeren met een verborgen venster. Ik heb van dergelijke dingen gehoord maar ik heb er nooit gebruik van gemaakt, dus ik weet niets in het bijzonder om je erop te wijzen.
Lezers hebben hem ook gewezen op een andere SuperUser-thread die laat zien hoe u een Visual Basic-script kunt gebruiken om verder te gaan dan het minimaliseren van de zichtbaarheid en de CMD-prompt volledig te verbergen. In die thread legt Harry MC uit:
Oplossing 1:
Bewaar deze ene regel tekst als bestand
invisible.vbs
:CreateObject ("Wscript.Shell"). Voer "" "" & WScript.Arguments (0) & "" "", 0, False uit
Als u een willekeurig programma of batchbestand onzichtbaar wilt uitvoeren, gebruikt u dit als volgt:
wscript.exe "C: \ Waar \ invisible.vbs" "C: \ Andere plaats \ MyBatchFile.bat"
Om ook een lijst met argumenten door te kunnen geven / door te sturen, gebruik je slechts twee dubbele aanhalingstekens
CreateObject ("Wscript.Shell"). Run "" & WScript.Arguments (0) & "", 0, False
bijv .: Invisible.vbs "Kill.vbs ME.exe"
Oplossing 2:
Gebruik een opdrachtregelhulpprogramma om een proces stil te starten: stil.
Het gebruik van een van de bovenstaande oplossingen, gebaseerd op uw comfortniveau met behulp van VBS en hulpmiddelen van derde partijen of niet, zal op zijn minst de zichtbaarheid van het CMD-venster verminderen of het helemaal verwijderen.
Heb je iets toe te voegen aan de uitleg? Geluid uit in de reacties. Wilt u meer antwoorden van andere technisch onderlegde Stack Exchange-gebruikers lezen? Bekijk hier de volledige discussiethread.