¿Qué comando puedo poner al final de un archivo por lotes para evitar el cierre automático de la consola después de la ejecución del archivo?
¿Qué comando puedo poner al final de un archivo por lotes para evitar el cierre automático de la consola después de la ejecución del archivo?
Respuestas:
En archivos por lotes de Windows / DOS:
pause
Esto imprime un buen "Press any key to continue . . . "
mensaje
O, si no quieres el "Press any key to continue . . ."
mensaje, haz esto en su lugar:
pause >nul
Depende de la pregunta exacta!
Normalmente pause
hace el trabajo dentro de un archivo .bat .
Si desea que cmd.exe no se cierre para poder seguir escribiendo, use el cmd /k
comando al final del archivo.
cmd /k
antes su comando. & cmd /k
no funciona
Si desea que cmd.exe no se cierre y pueda continuar escribiendo, use
cmd /k
Simplemente sentí la necesidad de aclarar qué /k
hace (desde el sitio web de Windows):
/k
: Ejecuta el comando especificado por string y continúa.
Entonces, cmd /k
sin un comando de seguimiento al final del archivo bat, solo mantendrá la cmd.exe
ventana abierta para su uso posterior.
Por otro lado, pause
al final de un archivo por lotes, simplemente pausará el proceso y terminará cmd.exe
al presionar el primer botón
La siguiente forma de tener comandos en un archivo por lotes abrirá nuevas ventanas de símbolo del sistema y las nuevas ventanas no se cerrarán automáticamente.
start "title" call abcd.exe param1 param2
start "title" call xyz.exe param1 param2
Si está utilizando Maven y desea omitir el tipeo y evitar que la consola se cierre para ver el resultado, debe usar el CALL
comando en el script, además de 'mvn clean install'.
De esta manera cerrará la consola
ECHO This is the wrong exemple
mvn clean install
pause
Así la consola permanecerá abierta
ECHO This is the right exemple
CALL mvn clean install
pause
Si no usa el CALL
comando, ninguno de los ejemplos pasados funcionará.
call <myCommand>
resuelto este problema: mi aviso dejó de cerrarse después de la primera ejecución
Agregue cmd.exe
como una nueva línea debajo del código que desea ejecutar:
c:\Python27\python D:\code\simple_http_server.py
cmd.exe
python script.py %1 && cmd
mi manera es escribir un lote real (diciendo "foo.bat") para terminar el trabajo; luego cree otro "start.bat":
@echo off
cmd /k foo.bat
Creo que esto es extremadamente útil cuando configuro variables de entorno únicas.
cmd /k
(sin ningún comando) al final del foo.bat
archivo y ejecutarlo. No necesitas un start.bat
archivo separado .
Llame cmd
al final del archivo por lotes.
Posibilidad 1: solo crea 2 archivos .bat y escribe en el primero:
start <filename> // name of 2nd batch file
exit
El archivo por lotes 2 es el archivo que no se cerrará al final. Entonces, cuando abra el lote nr.1, comenzará el segundo y se cerrará. Cuando finalice el segundo, no se cerrará por completo (siempre que no ponga la salida al final)
Posibilidad 2: archivo por lotes 1:
call <filename>
cls
echo End of file
pause
<any code you want>
Cuando finalice el segundo archivo, continuará con el archivo 1 nuevamente y generará el resto. Con eso incluso puedes hacer manejadores de errores. Si nr.1 falla, entra en nr.2 y lo muestra
Este pequeño truco le pide al usuario que ingrese una clave y la almacena en la variable% exitkey% (aunque esta variable podría llamarse como quiera).
set /p exitkey= "Press any key to continue..."
NB: el espacio después de '=' es muy importante
Sé que llego tarde pero mi forma preferida es:
:programend
pause>nul
GOTO programend
De esta forma, el usuario no puede salir con enter.
Hay dos formas de hacerlo dependiendo del caso de uso
1) Si desea que el indicador de cmd de Windows permanezca abierto para que pueda ver el resultado de la ejecución y cerrarlo después; utilizar
pause
2) si desea que el indicador de cmd de Windows permanezca abierto y le permita ejecutar algunos comandos posteriores; utilizar
cmd
Fácil, agrega cmd a tu última línea de murciélago, ¡PERO! Si restablece o borra la ruta del sistema, debe iniciar su cmd con la ruta completa, como:
%windir%\system32\cmd.exe
Por ejemplo, tengo un archivo bat para restablecer jdk a la versión anterior como esta:
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
desde que restablecí la ruta del sistema, tengo que ejecutar cmd con la ruta completa, o el sistema no puede encontrar cmd.exe, no podrá ejecutar cmd y simplemente cerrará la ventana y no podrá ver el mensaje de error .