Welchen Befehl kann ich am Ende einer Batchdatei einfügen, um das automatische Schließen der Konsole nach der Ausführung der Datei zu verhindern?
Welchen Befehl kann ich am Ende einer Batchdatei einfügen, um das automatische Schließen der Konsole nach der Ausführung der Datei zu verhindern?
Antworten:
In Windows / DOS-Batchdateien:
pause
Dies druckt eine schöne "Press any key to continue . . . "
Nachricht
Wenn Sie die "Press any key to continue . . ."
Nachricht nicht möchten , gehen Sie stattdessen folgendermaßen vor:
pause >nul
Kommt auf die genaue Frage an!
Normalerweise pause
erledigt der Job in einer .bat- Datei.
Wenn Sie möchten, dass cmd.exe nicht geschlossen wird, damit Sie weiter tippen können, verwenden Sie den cmd /k
Befehl am Ende der Datei.
cmd /k
Sie sie stattdessen vor Ihren Befehl. & cmd /k
wird nicht funktionieren.
Wenn Sie möchten, dass cmd.exe nicht geschlossen wird und Sie weiterhin eingeben können, verwenden Sie
cmd /k
Ich hatte gerade das Bedürfnis zu klären, was /k
(von der Windows-Website) funktioniert:
/k
: Führt den durch string angegebenen Befehl aus und fährt fort.
Also cmd /k
ohne Follow - up - Befehl am Ende der BAT - Datei wird einfach weiter cmd.exe
Fenster offen für die weitere Verwendung.
Andererseits wird pause
am Ende einer Batchdatei der Vorgang einfach angehalten und cmd.exe
beim ersten Tastendruck beendet
Die folgende Möglichkeit, Befehle in einer Batchdatei zu haben, öffnet neue Eingabeaufforderungsfenster und die neuen Fenster werden nicht automatisch beendet.
start "title" call abcd.exe param1 param2
start "title" call xyz.exe param1 param2
Wenn Sie Maven verwenden und die Eingabe überspringen und verhindern möchten, dass die Konsole geschlossen wird, um das Ergebnis anzuzeigen, müssen Sie den CALL
Befehl im Skript neben nur der 'mvn-Neuinstallation' verwenden.
So wird die Konsole geschlossen
ECHO This is the wrong exemple
mvn clean install
pause
So bleibt die Konsole offen
ECHO This is the right exemple
CALL mvn clean install
pause
Wenn Sie den CALL
Befehl nicht verwenden, funktioniert keines der vergangenen Beispiele.
call <myCommand>
löste dieses Problem: Meine Eingabeaufforderung wurde nach der ersten Ausführung nicht mehr geschlossen
Fügen Sie cmd.exe
als neue Zeile unter dem Code hinzu, den Sie ausführen möchten:
c:\Python27\python D:\code\simple_http_server.py
cmd.exe
python script.py %1 && cmd
Mein Weg ist es, einen tatsächlichen Stapel (mit der Aufschrift "foo.bat") zu schreiben, um den Job zu beenden. dann erstelle eine weitere "start.bat":
@echo off
cmd /k foo.bat
Ich finde das äußerst nützlich, wenn ich einmalige Umgebungsvariablen einrichte.
cmd /k
(ohne Befehl) am Ende der foo.bat
Datei setzen und diese ausführen. Sie benötigen keine separate start.bat
Datei.
Rufen Sie cmd
am Ende der Batch-Datei auf.
außerdem pause
.
set /p=
kann verwendet werden. Es werden Benutzereingaben erwartet und der Fluss wird freigegeben, wenn die Eingabetaste gedrückt wird.
oder
runas /user:# "" >nul 2>&1
Dies wird dasselbe tun, außer dass nichts aus der Benutzereingabe angezeigt wird oder im Befehlsverlauf verbleibt.
Möglichkeit 1: Erstellen Sie einfach 2 .bat-Dateien und schreiben Sie in die erste:
start <filename> // name of 2nd batch file
exit
Batch-Datei 2 ist die Datei, die am Ende nicht geschlossen wird. Wenn Sie also Batch Nr. 1 öffnen, wird der 2. gestartet und sich selbst geschlossen. Wenn der 2. beendet ist, wird er nicht vollständig geschlossen (solange Sie am Ende keinen Ausgang setzen).
Möglichkeit 2: Batchdatei 1:
call <filename>
cls
echo End of file
pause
<any code you want>
Wenn die 2. Datei endet, fährt sie erneut mit Datei 1 fort und gibt den Rest aus. Damit können Sie sogar Fehlerbehandlungsroutinen erstellen. Wenn nr.1 abstürzt, geht es in nr.2 und zeigt es an
Dieser kleine Hack fordert den Benutzer auf, einen Schlüssel einzugeben und in der Variablen% exitkey% zu speichern (diese Variable kann jedoch als beliebig bezeichnet werden).
set /p exitkey= "Press any key to continue..."
NB: Das Leerzeichen nach dem '=' ist sehr wichtig
Ich weiß, dass ich zu spät bin, aber mein bevorzugter Weg ist:
:programend
pause>nul
GOTO programend
Auf diese Weise kann der Benutzer nicht mit enter beenden.
Je nach Anwendungsfall gibt es zwei Möglichkeiten
1) Wenn Sie möchten, dass die Windows-Cmd-Eingabeaufforderung geöffnet bleibt, damit Sie das Ausführungsergebnis sehen und anschließend schließen können; verwenden
pause
2) wenn Sie möchten, dass die Windows-Cmd-Eingabeaufforderung geöffnet bleibt und Sie einige Befehlsnachwörter ausführen können; verwenden
cmd
Einfach, fügen Sie cmd zu Ihrer letzten Fledermauszeile hinzu, ABER! Wenn Sie Ihren Systempfad zurücksetzen oder löschen, müssen Sie Ihr cmd mit dem vollständigen Pfad beginnen, wie z.
%windir%\system32\cmd.exe
Zum Beispiel habe ich eine Bat-Datei, um JDK auf die alte Version wie folgt zurückzusetzen:
PATH=C:\Program Files\Java\jdk1.6.0_45\bin;C:\apache-ant-1.7.1\bin
SET JAVA_HOME=C:\Program Files\Java\jdk1.6.0_45
%windir%\system32\cmd.exe
Da ich den Systempfad zurückgesetzt habe, muss ich cmd mit dem vollständigen Pfad ausführen. Andernfalls kann das System cmd.exe nicht finden. Cmd kann nicht ausgeführt werden. Schließen Sie einfach das Fenster, und die Fehlermeldung wird nicht angezeigt .