Espere a que un comando finalice la ejecución en el Batch archivo de Windows

Siddharth Bishnoi 20 marzo 2023
  1. Use /WAIT para esperar a que un comando finalice la ejecución
  2. Use el comando TIMEOUT para retrasar la ejecución
  3. Use el Comando PAUSE para Pausar la Ejecución
Espere a que un comando finalice la ejecución en el Batch archivo de Windows

Hay varios comandos y procesos de instalación en un Batch archivo que, por lo general, tardan un tiempo en completarse. Pero cuando se ejecuta un Batch archivo, no espera a que finalice un proceso de comando; ejecuta todos los comandos línea por línea.

Es importante hacer que esos comandos esperen a que terminen y luego ejecutar los siguientes comandos. Para que un proceso espere hasta que termine, usamos el parámetro /wait con el comando START.

En lugar de iniciar un comando, si es necesario insertar retrasos en el Batch archivo durante algún intervalo de tiempo, podemos usar comandos como TIMEOUT y PAUSE para detener la ejecución del siguiente proceso durante un breve intervalo de tiempo. o hasta que se presione una tecla.

Este tutorial ilustra diferentes formas de esperar a que finalice un comando o un programa antes de ejecutar el siguiente comando.

Use /WAIT para esperar a que un comando finalice la ejecución

Cuando iniciamos un programa en un Batch archivo usando el comando START, podemos esperar hasta que el programa finalice agregando /wait al comando START. Incluso si hay varios comandos, se puede utilizar /wait para que cada proceso finalice y pase al siguiente.

Además, el parámetro /B se utiliza para permanecer en el mismo proceso sin crear una nueva ventana. El comando START sin el parámetro /B abre el programa o comando en una nueva ventana.

Espere a que un comando finalice la ejecución

Por ejemplo, debemos esperar a que un comando termine de ejecutarse antes de ejecutar el siguiente.

@echo off
echo starting first program.
START /B /WAIT cmd /c "C:\Users\Aastha Gas Harda\Desktop\testfile1.bat" > output.txt
echo The first program is executed successfully.
START /B systeminfo >> output.txt
echo All the programs are executed successfully
cmd /k

esperar a que termine un comando

Producción:

comando de salida

Espere a que el archivo .exe termine de ejecutarse

Otro ejemplo es donde necesitamos ejecutar un archivo .exe y esperar hasta que la ejecución se complete por completo.

@echo off
echo starting first program.
START /B /WAIT JRuler.exe
echo The first program is executed successfully.
START /B systeminfo >> output.txt
echo All the programs are executed successfully
cmd /k

esperar a que termine un exe

Producción:

cmd de salida esperando que termine un archivo exe

Tan pronto como cierre el archivo .exe, el segundo programa comenzará a ejecutarse. cmd /k en la última línea se usa para evitar que el símbolo del sistema se cierre después de la ejecución.

Si hay varios programas, puede usar /WAIT con cada comando para esperar hasta que finalice la ejecución. El comando START con el parámetro /WAIT no tiene ningún tiempo de espera, es decir, no importa cuánto tiempo tarde el proceso en finalizar; esperará hasta que se complete el proceso.

@echo off
START /WAIT install1.exe
START /WAIT install2.exe

El /WAIT solo se puede utilizar con el comando START. Podemos insertar un tiempo de retardo para otros comandos usando los comandos TIMEOUT y PAUSE.

Use el comando TIMEOUT para retrasar la ejecución

El comando TIMEOUT se utiliza para retrasar la ejecución de un comando durante unos segundos o minutos. Solo se puede utilizar en un Batch archivo.

El rango para el comando TIMEOUT varía entre -1 y 100000. Si el retraso se establece en -1, actuará como un comando de pausa para esperar hasta que se presione una tecla.

Como en el comando anterior, podemos reemplazar /wait insertando el comando TIMEOUT con el parámetro /t. La sintaxis para el comando TIMEOUT se da a continuación:

TIMEOUT /t <time>

Tomemos el ejemplo anterior y agreguemos un retraso de 30 segundos después de la ejecución del primer programa. El código para el mismo se muestra a continuación.

@echo off
echo starting first program.
START /B JRuler.exe
TIMEOUT /t 30
echo The first program is executed successfully.
START /B systeminfo >> output.txt
echo All the programs are executed successfully
cmd /k

comando de tiempo de espera del archivo de prueba

Producción:

comando de tiempo de espera de salida

Después de 30 segundos, el segundo programa comenzará a ejecutarse. Además, si un usuario presiona una tecla antes del tiempo de espera, el segundo programa comenzará a ejecutarse.

comando de tiempo de espera de salida después de la ejecución

Para evitar las pulsaciones de teclas del usuario, utilice el parámetro /nobreak con el comando TIMEOUT. Esto ignorará cualquier pulsación de tecla por parte del usuario.

Sin embargo, puede detener la demora presionando Ctrl+C, lo que aumentará el nivel de error1.

Use el Comando PAUSE para Pausar la Ejecución

El comando PAUSE se utiliza para pausar la ejecución de un Batch archivo hasta que se presione una tecla. Es útil si el usuario quiere leer el texto de salida o esperar hasta que finalice un proceso.

Sin embargo, no hay tiempo de espera y solo continuará hasta que el usuario presione una tecla.

@echo off
echo starting first program.
START /B cmd /c "C:\Users\Aastha Gas Harda\Desktop\testfile1.bat" > output.txt
echo The first program is executed successfully.
PAUSE
START /B systeminfo >> output.txt
echo All the programs are executed successfully
cmd /k

Comando de pausa del archivo de prueba

Producción:

comando de pausa de salida

Todos los métodos mencionados anteriormente funcionan bien. Si usa el comando START, se recomienda usar /wait en lugar de los comandos de retraso, ya que el proceso puede demorar más de lo especificado.