Batch-Dateien sind eine praktische Möglichkeit, eine Reihe von Befehlen in Windows auszuführen, aber gibt es sie trotzdem unsichtbar im Hintergrund? Lesen Sie weiter, um herauszufinden, wie.
Die Frage
SuperUser-Leser Jake möchte eine BAT-Datei unsichtbar ausführen, schreibt er:
Ich habe ein Ruby-Gem namens Redcar installiert, das über die Befehlszeile gestartet wird. Wenn es ausgeführt wird, stiehlt es die Shell, bis es beendet wird, also muss ich ein neues Shell-Fenster erstellen, um die Befehlszeilenarbeit fortzusetzen. Die Shell, die ich verwende, ist die GITBash-Shell von MySysGit.
Ich habe eine Redcar.bat-Datei gefunden, die Redcar als Verknüpfung starten soll, nehme ich an, aber ich möchte nicht, dass sich das zusätzliche Eingabeaufforderungsfenster öffnet, wenn ich die BAT-Datei starte.
Wie führe ich das BAT einfach aus, ohne die Eingabeaufforderung zu sehen?
Gibt es eine Lösung für Jakes verstohlenes Verlangen?
Die Antworten
SuperUser-Mitwirkender Afrazier antwortet mit einer Kombination aus schlechten und guten Nachrichten:
Sie können nicht – das Ausführen einer Batch-Datei mit der integrierten Eingabeaufforderung wird ein Fenster geöffnet halten, bis die Batch-Datei beendet wird.
Sie unternehmen Schritte, um sicherzustellen, dass die Batchdatei so schnell wie möglich beendet wird. Wenn möglich, ändern Sie die Batch-Datei, um ein beliebiges Programm mit dem auszuführen start
Befehl. Standardmäßig, start
kehrt sofort zurück, ohne auf das Beenden des Programms zu warten, sodass die Batchdatei weiter ausgeführt und vermutlich sofort beendet wird. Kombinieren Sie dies mit der Änderung Ihrer Verknüpfung, um die Batch-Datei minimiert auszuführen, und Sie sehen nur die Taskleiste blinken, ohne ein Fenster auf dem Bildschirm zu sehen.
Eine Einschränkung besteht darin, dass, wenn Sie ein Programm im Konsolenmodus ausführen, was viele Skriptinterpreter sind, die Batch-Datei wartet, bis das Programm beendet wird, und verwendet start
erzeugt ein neues Konsolenfenster. In diesem Fall müssen Sie die Windows-basierte Version des Interpreters anstelle der konsolenbasierten Version ausführen — nein start
notwendig. Für Perl würden Sie ausführen wperl.exe
anstatt perl.exe
. Für Python ist es pythonw.exe
anstatt python.exe
. Die alte Win32-Ruby-Distribution, die ich heruntergeladen habe, hat rubyw.exe
, die das gleiche tun sollte.
Eine letzte Möglichkeit besteht darin, ein Drittanbieter-Tool zu verwenden, um die Eingabeaufforderung mit einem ausgeblendeten Fenster auszuführen. Ich habe von solchen Dingen gehört, aber nie eine Verwendung dafür gehabt, daher kenne ich nichts Besonderes, auf das ich Sie hinweisen könnte.
Die Leser haben ihn auch darauf hingewiesen ein weiterer SuperUser-Thread Dies zeigt, wie Sie mit einem Visual Basic-Skript über das Minimieren der Sichtbarkeit hinausgehen und die CMD-Eingabeaufforderung vollständig ausblenden können. In diesem Thread erklärt Harry MC:
Lösung 1:
Speichern Sie diese eine Textzeile als Datei invisible.vbs
:
Um ein Programm oder eine Batch-Datei unsichtbar auszuführen, verwenden Sie es wie folgt:
Um auch eine Liste von Argumenten weitergeben/weitergeben zu können, verwenden Sie nur zwei doppelte Anführungszeichen
zB: Invisible.vbs „Kill.vbs ME.exe“
Lösung 2:
Verwenden Sie ein Befehlszeilentool, um einen Prozess im Hintergrund zu starten: Ruhig.
Wenn Sie eine der oben genannten Lösungen verwenden, je nach Ihrem Komfort mit VBS und Tools von Drittanbietern oder nicht, wird die Sichtbarkeit des CMD-Fensters mindestens verringert oder vollständig entfernt.