tagger tag windows command-line batch-file

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



tag folders (15)

¿Alguien puede 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?


Si desea que cmd.exe no se cierre y puede continuar escribiendo, use cmd /k

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

/k : ejecuta el comando especificado por cadena y continúa.

Por lo tanto, cmd /k sin un comando de seguimiento al final del archivo bat solo mantendrá la ventana cmd.exe abierta para su uso posterior.

Por otro lado, la pause al final de un archivo por lotes simplemente hará una pausa en el proceso y terminará cmd.exe en el primer botón presionando


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


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 que pueda seguir escribiendo, use el comando cmd /k al final del archivo.


En los archivos por lotes de Windows / DOS:

pause

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

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

pause >nul


Este pequeño truco le pide al usuario que ingrese una clave y la almacena en la variable% exitkey% (esta variable podría llamarse como quieras).

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

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


Fácil, agrega cmd a tu última línea de bate, PERO! Si restablece o borra la ruta de su 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

ya que reinicié 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 se puede ver el mensaje de error. .


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

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


Llame a cmd al final del archivo por lotes.


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

start <filename> // name of 2nd batch file exit

El archivo por lotes 2 es el archivo que no se cierra al final. Así que ahora cuando abres el lote nr.1 Comenzará el segundo y se cerrará. Cuando finalice el segundo, no se cerrará por completo (siempre y cuando no coloques exit 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, se procederá nuevamente al archivo 1 y se imprimirá el resto. Con eso incluso puedes hacer manejadores de errores. Si nr.1 se bloquea, entra en nr.2 y lo muestra


Sé que llego tarde pero mi manera preferida es:

:programend pause>nul GOTO programend

De esta manera el usuario no puede salir usando enter.


Si está utilizando Maven y desea omitir la escritura y evitar que la consola se cierre para ver el resultado que necesita para usar el comando CALL en el script, además de la "instalación limpia mvn".

Así se 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 comando CALL ninguno de los ejemplos de pasados ​​funcionará.


además de pause .

set /p=

se puede usar. Esperará la entrada del usuario y liberará el flujo cuando se presione Intro.

o

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

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


mi manera 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 únicas.


Hay dos formas de hacerlo dependiendo del caso de uso.

1) Si desea que el indicador de Windows cmd permanezca abierto para poder ver el resultado de la ejecución y cerrarlo después; utilizar

pause

2) si desea que el indicador de Windows cmd permanezca abierto y le permita ejecutar algunas contraseñas de comandos; utilizar

cmd


pause

o

echo text to display pause>nul