Saltar al contenido

Cómo esperar a que termine un proceso para ejecutar otro proceso en un archivo por lotes

Solución:

Usar start / w nombre del programa esperar el final del nombre del programa

START /W notepad
ECHO Back from notepad  
START /W wordpad
ECHO Back from wordpad
START /W notepad

Prueba algo como esto …

@ECHO OFF

PSKILL NOTEPAD

START "" "C:Program FilesWindows NTAccessorieswordpad.exe"

:LOOP
PSLIST wordpad >nul 2>&1
IF ERRORLEVEL 1 (
  GOTO CONTINUE
) ELSE (
  ECHO Wordpad is still running
  TIMEOUT /T 5
  GOTO LOOP
)

:CONTINUE
NOTEPAD

solía PSLIST y PSEXEC, pero también podrías usar TASKKILL y TASKLIST. los >nul 2>&1 está ahí para ocultar toda la salida de PSLIST. los SLEEP 5 La línea no es necesaria, pero está ahí para restringir la frecuencia con la que verifica si WordPad todavía se está ejecutando.

Esta es una versión actualizada de la respuesta de aphoria.

Reemplacé PSLIST y PSEXEC con TASKKILL y TASKLIST`. Como parecen funcionar mejor, no pude hacer que PSLIST se ejecutara en Windows 7.

También reemplazó Sleep con TIMEOUT.

Esto fue todo lo que necesitaba para que el script funcionara bien, y todas las adiciones fueron proporcionadas por los grandes chicos que publicaron los comentarios.

Además, si hay una demora antes de que se inicie .exe, podría valer la pena insertar un tiempo de espera antes del: bucle.

@ECHO OFF

TASKKILL NOTEPAD

START "" "C:Program FilesWindows NTAccessorieswordpad.exe"

:LOOP
tasklist | find /i "WORDPAD" >nul 2>&1
IF ERRORLEVEL 1 (
  GOTO CONTINUE
) ELSE (
  ECHO Wordpad is still running
  Timeout /T 5 /Nobreak
  GOTO LOOP
)

:CONTINUE
NOTEPAD
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *