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