Hemsida » hur » Kan jag köra en Windows-batchfil utan en synlig kommandotolk?

    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 konsolbaserade Start nödvändig. För Perl skulle du springa wperl.exe istället för perl.exe. För Python är det pythonw.exe istället för python.exe. Den gamla Win32 Ruby distributionen jag har laddat ner har rubyw.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.