Kan jag köra en Windows-batchfil utan en synlig kommandotolk?
Batchfiler är ett praktiskt sätt att utföra en serie kommandon i Windows, men finns det ändå att köra dem osynligt i bakgrunden? Läs vidare om hur.
Dagens Question & Answer-session kommer till oss med tillstånd av SuperUser-en indelning av Stack Exchange, en community-driven gruppering av Q & A-webbplatser.
Frågan
SuperUser-läsare Jake vill springa en BAT-fil osynligt, han skriver:
Jag har installerat en rubinpärla som heter Redcar, som lanseras från kommandoraden. När det körs, stjäl det skalet tills det upphör, så jag måste skapa ett nytt skalfönster för att fortsätta att göra kommandoradsarbete. Skalet jag använder är GITBash-skalet från MySysGit.
Jag hittade en Redcar.bat-fil som är avsedd att starta Redcar som en genväg, antar jag, men jag vill inte att det extra kommandotolken ska öppnas när jag startar BAT-filen.
Hur kör jag bara BAT utan att se prompten?
Finns det en lösning för Jakes snabba snabba önskan?
Svaren
SuperUser-bidragsgivaren Afrazier svarar med en kombination av dåliga och goda nyheter:
Du kan inte - genomföra en batchfil med den inbyggda Kommandotolken kommer att hålla ett fönster öppet tills batchfilen avslutas.
Vad du kan gör gör åtgärder för att se till att batchfilen avslutas så fort som möjligt. Om det är möjligt, ändra batchfilen för att köra vilket program som helst med
Start
kommando. Som standard,Start
returnerar genast utan att vänta på att programmet ska gå ut, så batchfilen fortsätter att springa och förmodligen sluta omedelbart. Par som med att ändra din genväg för att köra batchfilen minimeras, och du får bara se aktivitetsfliken utan att ens se ett fönster på skärmen.Ett tillvägagångssätt för detta är att om du kör ett konsollägesprogram, vilket många scripttolkare är, väntar batchfilen för att programmet ska gå ur och använda
Start
kommer att kasta ett nytt konsolfönster. Vad du behöver göra i det här fallet kör Windows-baserad version av tolken istället för den konsolbaseradeStart
nödvändig. För Perl skulle du springawperl.exe
istället förperl.exe
. För Python är detpythonw.exe
istället förpython.exe
. Den gamla Win32 Ruby distributionen jag har laddat ner harrubyw.exe
, vilket borde göra samma sak.En sista möjlighet är att använda ett tredje partverktyg för att köra kommandotolken med ett dolt fönster. Jag har hört talas om sådana saker men aldrig använt dem, så jag känner inte till något speciellt för att peka på dig.
Läsare pekade också på honom på en annan SuperUser-tråd som framhäver hur du kan använda en Visual Basic Script för att gå utöver att minimera synligheten och direkt dölja CMD-prompten. I den tråden förklarar Harry MC:
Lösning 1:
Spara den här raden av text som fil
invisible.vbs
:CreateObject ("Wscript.Shell"). Kör "" "" & WScript.Arguments (0) & "" "", 0, False
För att köra ett program eller en batchfil osynligt, använd den så här:
wscript.exe "C: \ Wherever \ invisible.vbs" "C: \ Något annat ställe \ MyBatchFile.bat"
För att kunna vidarebefordra / relä använder en lista med argument endast två dubbla citat
CreateObject ("Wscript.Shell"). Kör "" & WScript.Arguments (0) & "", 0, False
t ex: Invisible.vbs "Kill.vbs ME.exe"
Lösning 2:
Använd ett kommandoradsverktyg för att tyst starta en process: Tyst.
Att använda någon av ovanstående lösningar, baserad på din komfortnivå med hjälp av VBS och tredjepartsverktyg eller inte, kommer åtminstone att minska synligheten hos CMD-fönstret eller ta bort det direkt.
Har du något att lägga till förklaringen? Ljud av i kommentarerna. Vill du läsa mer svar från andra tech-savvy Stack Exchange-användare? Kolla in hela diskussionsgängan här.