Quale comando posso inserire alla fine di un file batch per impedire la chiusura automatica della console dopo l'esecuzione del file?
Quale comando posso inserire alla fine di un file batch per impedire la chiusura automatica della console dopo l'esecuzione del file?
Risposte:
Nei file batch Windows / DOS:
pause
Questo stampa un bel "Press any key to continue . . . "
messaggio
Oppure, se non si desidera il "Press any key to continue . . ."
messaggio, procedere come segue:
pause >nul
Dipende dalla domanda esatta!
Normalmente pause
fa il lavoro all'interno di un file .bat .
Se si desidera che cmd.exe non si chiuda per poter continuare a digitare, utilizzare il cmd /k
comando alla fine del file.
cmd /k
prima del tuo comando. & cmd /k
non funzionerà.
Se si desidera che cmd.exe non si chiuda e sia possibile continuare a digitare, utilizzare
cmd /k
Ho appena sentito la necessità di chiarire cosa /k
fa (dal sito Web di Windows):
/k
: Esegue il comando specificato dalla stringa e continua.
Quindi cmd /k
senza il comando di follow-up alla fine del file bat manterremo la cmd.exe
finestra aperta per un ulteriore utilizzo.
D'altra parte pause
alla fine di un file batch semplicemente metterà in pausa il processo e terminerà cmd.exe
alla prima pressione del pulsante
Il modo seguente di avere comandi in un file batch aprirà le nuove finestre del prompt dei comandi e le nuove finestre non usciranno automaticamente.
start "title" call abcd.exe param1 param2
start "title" call xyz.exe param1 param2
Se stai usando Maven e vuoi saltare la digitazione e impedire la chiusura della console per vedere il risultato, devi usare il CALL
comando nello script, oltre a 'mvn clean install'.
In questo modo si chiuderà la console
ECHO This is the wrong exemple
mvn clean install
pause
In questo modo la console rimarrà aperta
ECHO This is the right exemple
CALL mvn clean install
pause
Se non si utilizza il CALL
comando nessuno degli esempi di passato funzionerà.
call <myCommand>
risolto questo problema: il mio prompt ha smesso di chiudersi dopo la prima esecuzione
Aggiungi cmd.exe
come nuova riga sotto il codice che desideri eseguire:
c:\Python27\python D:\code\simple_http_server.py
cmd.exe
python script.py %1 && cmd
il mio modo è di scrivere un batch reale (dicendo "foo.bat") per finire il lavoro; quindi crea un altro "start.bat":
@echo off
cmd /k foo.bat
Trovo che ciò sia estremamente utile quando imposto le variabili d'ambiente una tantum.
cmd /k
(senza alcun comando) alla fine del foo.bat
file ed eseguirlo. Non hai bisogno di un start.bat
file separato .
Chiama cmd
alla fine del file batch.
Possibilità 1: basta creare 2 file .bat e scrivere nel primo:
start <filename> // name of 2nd batch file
exit
Il file batch 2 è il file che non si chiuderà alla fine. Quindi ora quando apri il batch nr.1, inizierà il 2 ° e si spaccherà da solo. Al termine del 2 ° non si chiuderà del tutto (purché non si metta l'uscita alla fine)
Possibilità 2: file batch 1:
call <filename>
cls
echo End of file
pause
<any code you want>
Quando il secondo file termina, passerà nuovamente al file 1 e ne genererà il resto. Con ciò puoi persino creare gestori di errori. Se nr.1 si arresta in modo anomalo, entra in nr.2 e lo visualizza
Questo piccolo trucco richiede all'utente di inserire una chiave e la memorizza nella variabile% exitkey% (questa variabile può essere chiamata come preferisci).
set /p exitkey= "Press any key to continue..."
NB: lo spazio dopo '=' è molto importante
So di essere in ritardo ma il mio modo preferito è:
:programend
pause>nul
GOTO programend
In questo modo l'utente non può uscire usando enter.
Esistono due modi per farlo a seconda del caso d'uso
1) Se si desidera che il prompt cmd di Windows rimanga aperto in modo da poter vedere il risultato dell'esecuzione e chiuderlo in seguito; uso
pause
2) se si desidera che il prompt di cmd di Windows rimanga aperto e consenta di eseguire alcune parole di comando; uso
cmd
Facile, aggiungi cmd alla tua ultima linea di mazza, MA! se ripristini o cancelli il tuo percorso di sistema, devi iniziare il tuo cmd con il percorso completo, come:
%windir%\system32\cmd.exe
Ad esempio, ho un file bat per ripristinare jdk alla vecchia versione come questa:
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 quando ho ripristinato il percorso di sistema, devo eseguire cmd con il percorso completo o il sistema non riesce a trovare cmd.exe, non eseguirà cmd e chiuderà semplicemente la finestra e non è possibile visualizzare l'errore msg .