wake-up-neo.com

So verhindern Sie das automatische Schließen der Konsole nach der Ausführung der Batch-Datei

Welchen Befehl kann ich am Ende einer Batch-Datei einfügen, um das automatische Schließen der Konsole nach der Ausführung der Datei zu verhindern?

471
joe

In Windows/DOS-Batchdateien:

pause

Dies druckt eine nette "Press any key to continue . . . " Nachricht

Oder, wenn Sie die Nachricht "Press any key to continue . . ." nicht möchten, gehen Sie stattdessen wie folgt vor:

pause >nul
598
Dave Bauman

Kommt auf die genaue Frage an!

Normalerweise erledigt pause die Arbeit innerhalb einer . Bat Datei.

Wenn Sie möchten, dass cmd.exe nicht geschlossen wird, um die Eingabe fortsetzen zu können, verwenden Sie den Befehl cmd /k am Ende der Datei.

133

Wenn cmd.exe nicht geschlossen werden soll und weiterhin eingegeben werden kann, verwenden Sie cmd /k.

Ich hatte gerade das Bedürfnis zu klären, was /k tut (von der Windows-Website):

/k: Führt den durch string angegebenen Befehl aus und fährt fort.

Also wird cmd /k ohne Follow-up-Befehl am Ende der bat-Datei nur das Fenster cmd.exe zur weiteren Verwendung geöffnet lassen.

Andererseits unterbricht pause am Ende einer Batch-Datei den Vorgang einfach und beendet cmd.exe beim ersten Tastendruck

61
Valentine Stone

Die folgende Art, Befehle in einer Batch-Datei 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
21
user6928445

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 Befehl CALL im Skript verwenden, außer nur den Befehl 'mvn clean' Installieren'.

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 Befehl CALL nicht verwenden, funktioniert keines der Past-Beispiele.

13
Andrey Hartung

Fügen Sie cmd.exe als neue Zeile unter dem Code ein, den Sie ausführen möchten:

c:\Python27\python D:\code\simple_http_server.py

cmd.exe
11
lyfing

mein Weg ist es, einen tatsächlichen Stapel ("foo.bat") zu schreiben, um den Job zu beenden. dann erstelle noch eine "start.bat":

@echo off
cmd /k foo.bat

Ich finde das sehr nützlich, wenn ich einmalige Umgebungsvariablen einrichte.

9
Erich Chen

Rufen Sie am Ende der Batch-Datei cmd auf.

8
user4155296

außerdem pause.

set /p=

kann verwendet werden. Erwartet Benutzereingaben und gibt den Fluss frei, wenn die Eingabetaste gedrückt wird.

oder

runas /user:# "" >nul 2>&1

dies geschieht genauso, außer dass nichts von der Benutzereingabe angezeigt wird und nicht im Befehlsverlauf verbleibt.

5
npocmaka

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 nun Charge Nr. 1 öffnen, wird die zweite Charge gestartet und es wird automatisch geschlossen. Wenn die zweite beendet ist, wird sie nicht vollständig geschlossen (solange Sie den Ausgang nicht am Ende setzen).

Möglichkeit 2: Batch-Datei 1:

call <filename>
cls
echo End of file
pause
<any code you want>

Wenn die 2. Datei endet, wird erneut mit Datei 1 fortgefahren und der Rest ausgegeben. Damit können Sie sogar Fehlerbehandlungsroutinen erstellen. Wenn Nr. 1 abstürzt, wird Nr. 2 angezeigt

3
BlazeLP

Bei diesem kleinen Hack wird der Benutzer aufgefordert, einen Schlüssel einzugeben und in der Variablen% exitkey% zu speichern (diese Variable kann aber auch als beliebig bezeichnet werden).

set /p exitkey= "Press any key to continue..."

Anmerkung: das Leerzeichen nach dem '=' ist sehr wichtig

2

Hatte hier Probleme mit den Antworten, daher habe ich mir Folgendes ausgedacht, das für mich (TM) funktioniert:

cmd /c node_modules\.bin\tsc
cmd /c node rollup_build.js
pause
2
lama12345
pause

oder

echo text to display
pause>nul
2
Zenedus

Ich weiß, dass ich zu spät komme, aber mein bevorzugter Weg ist:

:programend
pause>nul
GOTO programend

Auf diese Weise kann der Benutzer nicht mit enter beenden.

2
decadenza

Je nach Anwendungsfall gibt es zwei Möglichkeiten.

1) Wenn Windows cmd Prompt geöffnet bleiben soll, damit Sie das Ausführungsergebnis sehen und es anschließend schließen können; verwenden

pause

2) wenn Sie möchten, dass die Windows-Eingabeaufforderung geöffnet bleibt und Sie einige Befehlsfolgen ausführen können; verwenden

cmd

enter image description here

1
Hitesh Sahu

Einfach, füge cmd zu deiner letzten Fledermausreihe hinzu, ABER! Wenn Sie Ihren Systempfad zurücksetzen oder löschen, müssen Sie Ihr Cmd mit dem vollständigen Pfad beginnen, z.

%windir%\system32\cmd.exe

Ich habe zum Beispiel eine bat-Datei, um jdk auf die alte Version 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, oder das System kann cmd.exe nicht finden. cmd wird nicht ausgeführt und das Fenster wird geschlossen, und die Fehlermeldung wird nicht angezeigt .

0
Wei Kleeff