Cómo evitar el cierre automático de la consola después de la ejecución del archivo por lotes.

¿Puede alguien decirme qué comando colocar al final de un archivo por lotes para evitar el cierre automático de la consola después de la ejecución del archivo?

En archivos por lotes de Windows / DOS:

pause 

Esto imprime un bonito mensaje "Press any key to continue . . . "

O bien, si no desea "Press any key to continue . . ." mensaje, haz esto en su lugar:

 pause >nul 

Depende de la pregunta exacta!

Normalmente, la pause hace el trabajo dentro de un archivo .bat .

Si desea que cmd.exe no se cierre para poder seguir escribiendo, use el comando cmd /k al final del archivo.

Si desea que cmd.exe no se cierre y pueda seguir escribiendo, use cmd /k

Solo sentí la necesidad de aclarar qué hace /k (desde el sitio web de Windows):

/k : realiza el comando especificado por string y continúa.

Así que cmd /k sin comando de seguimiento al final del archivo bat mantendrá la ventana de cmd.exe abierta para su uso posterior.

Por otro lado, pause al final de un archivo por lotes simplemente pausará el proceso y finalizará cmd.exe al presionar el primer botón

La forma siguiente de tener comandos en un archivo por lotes abrirá nuevas ventanas de solicitud de comando y las nuevas ventanas no se cerrarán automáticamente.

 start "title" call abcd.exe param1 param2 start "title" call xyz.exe param1 param2 

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 

Llame a cmd al final del archivo por lotes.

mi camino es escribir un lote real (diciendo “foo.bat”) para terminar el trabajo; luego crea otro “start.bat”:

 @echo off cmd /k foo.bat 

Encuentro que esto es extremadamente útil cuando configuro variables de entorno de una sola vez.

además de pause .

 set /p= 

se puede utilizar. Esperará la entrada del usuario y liberará el flujo cuando se presione enter.

o

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

que hará lo mismo, excepto que nada de la entrada del usuario se mostrará ni permanecerá en el historial de comandos.

Posibilidad 1: Simplemente haga 2 archivos .bat y escriba en el primero:

 start  // name of 2nd batch file exit 

El archivo por lotes 2 es el archivo que no se cerrará al final. Así que ahora, cuando abras el lote nr.1, comenzará el 2. ° y el cloe mismo. Cuando termine el segundo no se cerrará por completo (siempre y cuando no ponga la salida al final)

Posibilidad 2: archivo por lotes 1:

 call  cls echo End of file pause  

Cuando termine el segundo archivo, se procederá de nuevo al archivo 1 y se imprimirá el rest. Con eso, incluso puedes crear manejadores de errores. Si nr.1 falla, entra en nr.2 y lo muestra

Este pequeño hack le pide al usuario que ingrese una clave y la almacena en la variable% exitkey% (aunque esta variable se puede llamar como quieras).

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

NB: el espacio después del ‘=’ es muy importante

 pause 

o

 echo text to display pause>nul 

Hay dos formas de hacerlo depende del caso de uso

1) Si desea que el indicador de Windows cmd 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 algunas palabras clave de comando; utilizar

cmd

enter image description here

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 una 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 ejecutará cmd, y simplemente cerrará la ventana, y no podrá ver el mensaje de error .

Sé que llego tarde pero mi manera preferida es:

 :programend pause>nul GOTO programend 

De esta forma, el usuario no puede salir usando enter.