Mantenga CMD abierto después de que se ejecute el archivo BAT

169

Tengo un archivo bat como este:

ipconfig

Eso imprimirá la información de IP en la pantalla, pero antes de que el usuario pueda leer esa información, CMD se cierra.

Creo que CMD asume que el script ha terminado, por lo que se cierra.

¿Cómo mantengo CMD abierto una vez finalizado el script?

pattyd
fuente
44
@RobKielty es la misma pregunta bien, pero aquí tenemos una nueva respuesta (que es mejor en mi humilde opinión)
alfasin
@alfasin ¿No es eso lo mismo que la respuesta de Rutger Nijlunsing?
Rob Kielty
@RobKielty no, mi respuesta no es la misma que no usa, lo pausecual es una buena solución (y es por eso que voté por esta respuesta) pero no una que realmente resuelva el problema porque después de que el usuario golpea Entero Spacela ventana se cerrará. ..
alfasin

Respuestas:

163

Dependiendo de cómo esté ejecutando el comando, puede colocar /kdespués cmdpara mantener la ventana abierta.

cmd /k my_script.bat

Simplemente agregar cmd /kal final de su archivo por lotes también funcionará. Gracias a Luigi D'Amico, quien publicó sobre esto en los comentarios a continuación.

Jason Schindler
fuente
14
Después de todos sus scripts en su archivo bat - poner -> cmd / k
Luigi D'Amico
3
Tenga en cuenta que si su programa contiene errores sintácticos, la ventana se cerrará si lo ejecutó haciendo doble clic y colocándolo cmd /kal final.
Tobias Feil
Esto no explica el cierre de ventanas cmd si el usuario hizo doble clic en el archivo.
K - La toxicidad en SO está creciendo.
238

Poner pauseal final de su archivo .BAT.

El Gavilán
fuente
77
Esto es exactamente lo que estaba buscando, porque estoy ejecutando el archivo bat al inicio, no a través de un comando CMD. +1
Hawkeye
3
Si aún desea interactuar con el archivo bat después de su ejecución, reemplace la PAUSA con solo cmd / k; luego, después de que se hayan ejecutado sus scripts, aún puede ejecutar comandos manuales después en el mismo contexto
Luigi D'Amico,
No puedo soportar ver que este no fue el comentario de la "solución" para esta pregunta
newhouse
57

Solo agregue @pauseal final.

Ejemplo:

@echo off
ipconfig
@pause

O también puedes usar:

cmd /k ipconfig
ZygD
fuente
55
¿Qué hace el símbolo @? ¿Hay alguna diferencia entre @pause y pause?
demonicdaron
3
@demonicdaron Respuesta explicando el símbolo @: stackoverflow.com/a/21077142/2258
Richard Morgan
Pero en este caso, no debería hacer ninguna diferencia.
Florian Leitgeb
La diferencia entre @pausey pausese puede ver visualmente en esta respuesta: stackoverflow.com/questions/17957076#60053224
ZygD
7

Agregar pause(Windows 7) al final no funcionó para mí,
pero agregar el cmd /kfrente de mi comando sí funcionó.

Ejemplo:

cmd /k gradlew cleanEclipse
Robin
fuente
7

Cuando se inicia el archivo .bat no desde la línea de comando (por ejemplo, haciendo doble clic).

echo The echoed text
@pause

en_pausa

echo The echoed text
pause

pausa

echo The echoed text
cmd /k

cmd k

echo The echoed text & pause

y_pausa

ZygD
fuente
3

start cmd /khizo la magia por mí De hecho, lo usé para preparar la aplicación cordova phonegap, ejecuta el comando, muestra el resultado y espera a que el usuario lo cierre. A continuación se muestra el ejemplo simple

start cmd /k echo Hello, World!

Lo que utilicé en mi caso

start cmd /k cordova prepare

Actualizar

Incluso podría tener un título para esto usando

start "My Title" echo Hello, World!

jafarbtech
fuente
1

Si está iniciando el script dentro de la línea de comando, luego agregue exit /bpara mantener abierto CMD

Julito Sanchis
fuente
Prácticamente no resuelve la pregunta, ya que modificar ipconfigy otros archivos por lotes integrados es una muy mala idea .
robinCTS
1

En Windows agregue '& Pause' al final de su comando en el archivo.

samadadi
fuente
1

También estaba confundido sobre por qué estamos agregando un cmdal principio y me preguntaba si primero tenía que abrir el símbolo del sistema. Lo que debe hacer es escribir el comando completo junto con cmd /k. Por ejemplo, suponga que su nombre de archivo por lotes es "my_command.bat", que ejecuta el comando, javac my_code.javaentonces el código en su archivo por lotes debe ser:

cmd /k javac my_code.java

Básicamente, no es necesario abrir el símbolo del sistema en la carpeta actual y escribir el comando anterior, pero puede guardar este código directamente en su archivo por lotes y ejecutarlo directamente.

Torta oxidada
fuente
0
javac -d C:\xxx\lib\ -classpath C:\xxx\lib\ *.java

cmd cd C:\xxx\yourbat.bat

el segundo comando hace que su ventana de cmd no se cierre. Lo importante es que aún puede ingresar un nuevo comando

Huanfasdawq Huanfasd
fuente
0

Como nota al margen, esto también funciona cuando se ejecuta un comando directamente desde la barra de búsqueda en Windows.

por ejemplo, la ejecución ipconfigdirecta cerrará directamente la ventana cmd después de que el comando haya salido.

ingrese la descripción de la imagen aquí

Usando cmd \k <command>will - que era lo que estaba tratando de hacer cuando encontré esta respuesta.

ingrese la descripción de la imagen aquí

Tiene la ventaja adicional de reconocer siempre el comando que está intentando ejecutar. Por ejemplo, ejecutar echo hello worlddesde la barra de búsqueda no funcionará porque ese no es un comando, pero cmd \k echo hello worldfunciona bien.

sommmen
fuente