Archivos por lotes: cómo dejar la ventana de la consola abierta

105

Tengo dos archivos por lotes, uno de ellos ejecuta otro, es decir

  1. "Mi archivo por lotes"> 2. "Otro archivo por lotes"

Creé un acceso directo del primer archivo por lotes y edité sus propiedades para llamarlo de la siguiente manera.

cmd.exe /k "<SomePath>\<My Batch File>.bat" & pause

Qué quiero hacer Quiero que la ventana de la consola se abra después de que finalice la ejecución del archivo por lotes. Ahora simplemente se cierra, intentó jugar con las banderas de cmd, sin resultado.

Plataforma: Windows7


ACTUALIZACIÓN 1

Modificada la estructura, el ejemplo simple como este no funciona tan bien, solo un archivo por lotes, es decir, no hay el 2. "Otro archivo por lotes" El único archivo por lotes contiene algo como este

start /B /LOW /WAIT make package
cmd /K

ACTUALIZACIÓN 2

El mismo atajo que se invoca desde Explorer no cierra la ventana de la consola. Pero la ventana de la consola se cierra cuando se invoca el acceso directo desde el elemento anclado en la barra de tareas

¿Alguna idea de cómo mantener abierta la ventana de la consola?

deimus
fuente
¿Supongo que quiere My Batch Fileque se quede?
Marc B
"Caliente para salir de la ventana de la consola de un archivo por lotes abiertos" se preguntó y respondió de manera más clara aquí: superuser.com/questions/175515/...
Oberlies

Respuestas:

126

Si eso es realmente todo lo que hace el archivo por lotes, elimine cmd /Ky agregue PAUSE.

start /B /LOW /WAIT make package
PAUSE

Luego, solo apunte su acceso directo a "My Batch File.bat"... no es necesario ejecutarlo CMD /K.

ACTUALIZAR

Ah, algo de información nueva ... estás intentando hacerlo desde un atajo fijo en la barra de tareas.

Encontré esto, Agregar archivos por lotes a la barra de tareas de Windows 7 como el Inicio rápido de Vista / XP , con la parte relevante a continuación.

  1. Primero, fija un acceso directo CMD.EXEa la barra de tareas presionando el botón de inicio, luego escribe "cmd" en el cuadro de búsqueda, haz clic derecho en el resultado y elige "Anclar a la barra de tareas".
  2. Haga clic derecho en el acceso directo en la barra de tareas.
  3. Verá una lista que incluye " Símbolo del sistema " y " Desanclar este programa de la barra de tareas ".
  4. Haga clic con el botón derecho en el icono CMD.EXEy seleccione Properties.
  5. En el cuadro de Destino, vaya al final de "%SystemRoot%\system32\cmd.exe"y escriba " /C "la ruta y el nombre del archivo por lotes.

Para sus propósitos, puede:

  1. Use /Cy coloque un PAUSEal final de su archivo por lotes.

    O

  2. Cambie la línea de comando para usar /Ky eliminar PAUSEde su archivo por lotes.
aforia
fuente
Ya lo hice, básicamente mi pregunta no es cómo llamar a otro archivo por lotes ...
deimus
Luego, necesitamos ver el contenido de ambos archivos por lotes.
aphoria
Por favor, vea la pregunta actualizada
deimus
El mismo problema, reemplazar CMD / K no funciona. ¿Por qué la ventana de consola no se cierra si se invoca el acceso directo desde Explorer?
Deimus
13

Aquí:

cmd.exe /k "<SomePath>\<My Batch File>.bat" & pause

Mira lo que estás haciendo:

  1. (cmd / K) Inicie una NUEVA instancia de cmd.
  2. (& pausa) Pausa la instancia de cmd ACTUAL .

¿Como resolverlo? bueno, usando la sintaxis correcta, adjuntando el argumento para la nueva instancia de CMD:

cmd.exe /k ""<SomePath>\<My Batch File>.bat" & pause"
ElektroStudios
fuente
6

Acabo de escribir la última línea como Pause , funcionó bien tanto con .bat como con .cmd. También mostrará un mensaje como 'Presione cualquier tecla para continuar'.

Sai
fuente
¡Esta es la respuesta correcta! Debería ser el más votado.
Patrick Hillert
5

En la última línea del archivo por lotes que desea mantener abierto, coloque un

pause >nul

Bali C
fuente
Entonces parece que se está cerrando temprano, tal vez un error en el guión. Intente abrir un indicador de cmd y ejecutarlo desde allí, luego podrá ver si hay algún error.
Bali C
3

Para dejar la ventana de la consola abierta solo tiene que agregar a la última línea de comando en el archivo por lotes:

' & pause'
Umberto
fuente
2

Puede poner un pausecomando en la última línea de su archivo por lotes:

@echo off
echo Hey, I'm just doing some work for you.
pause

Te dará algo como esto como salida:

Oye, solo estoy trabajando para ti.

Pulse cualquier tecla para continuar ...

Nota: El uso de @echo evita que se genere el comando antes de que se imprima.

Patrick Hillert
fuente
0
rem Just use "pause" at the end of the batch file.
...
......
.......
pause
David Castro
fuente
-1

poner al final reabrirá tu consola

start cmd 
Nik
fuente
Esto no resuelve el problema, el usuario quiere mantener la ventana abierta, no volver a abrir una vieja.
Adam
-5

Solo presiono enter y escribo Pausa y funciona bien

Jfly 27
fuente