batch-file - programacion - pausa bat 10 segundos
¿Cómo establecer un tiempo de espera para un proceso en Windows 7? (4)
Bali C dio una respuesta concisa y precisa. Necesitaba algo un poco más característico y reutilizable. Basado en el ejemplo de Bali C. Se me ocurrió esto. Si alguien necesita lo mismo que yo.
tu.bat
REM...
CALL STARTwaitKILL..bat /relative/path/your_program.exe
REM...
STARTwaitKILL.BAT
@ECHO OFF
IF[%1]==[] GOTO EOF
IF NOT EXIST %1 GOTO EOF
REM SET PRIORITY=/NORMAL
REM ADJUST PRIORITY, BELOWNORMAL LETS BATCH FILE RUN MORE SMOOTHLY
REM WITH A PROGRAM THAT CONSUMES MORE CPU. SEE ABOUT MAXWAIT BELLOW
SET PRIORITY=/BELOWNORMAL
REM SET PRIORITY=/LOW
REM 0 NORMAL WINDOW :: 1 NO WINDOW :: 2 MINIMIZED WINDOW
SET /A HIDDEN=1
REM MAXWAIT HERE IS MORE LIKE MINIMUM WAIT IN WINDOWS.
SET MAXWAIT=10
SET WAITCOUNT=0
SET ARGS=/I %PRIORITY%
IF %HIDDEN% EQU 1 SET ARGS=%ARGS% /B
IF %HIDDEN% EQU 2 SET ARGS=%ARGS% /MIN
START %ARGS% %1
:WAIT
IF %WAITCOUNT% GEQ %MAXWAIT% GOTO KILL_IT
TIMEOUT /T 1 > NUL
SET /A WAITCOUNT+=1
FOR /F "delims=" %%a IN (''TASKLIST ^| FIND /C "%~nx1"'') DO IF %%a EQU 0 GOTO RUN_DONE
GOTO WAIT
:KILL_IT
TASKKILL /IM %~nx1 /F > NUL
:RUN_DONE
Podría desarrollarse un mineral para tomar más argumentos a favor de la prioridad, pero no tengo la necesidad de hacerlo. No debería ser difícil de agregar.
Me gustaría iniciar un programa con un archivo por lotes de Windows. Pero el programa debe detenerse después de un cierto valor de tiempo de espera. Por ejemplo: Ejecute el programa 60 segundos y deténgalo después de 60 segundos.
Bajo Linux, hay un buen comando de timeout
para hacer lo que quiero. Windows también tiene un comando de timeout
, pero es solo para pausar un comando, para retrasar su ejecución. ¿Hay algo más en Windows para hacerlo?
Instalación: Windows 7, 64 Bit, Profesional
El start
+ timeout
+ taskkill
espera exactamente el tiempo dado. Como tenía que dejar de esperar si el proceso sale antes , creé mi propia solución en C ++.
El programa tuxliketimeout
imita el tiempo de espera de GNU . Siéntase libre de descargar y compilar desde
No existe ningún comando en Windows para retrasar una aplicación o para establecer un tiempo de espera para una aplicación
El tiempo de espera en Windows es para demorar el proceso de ejecución de CMD / Batfile, nada más de utilidad.
Puedes usar herramientas externas para eso, no recuerdo el nombre de ninguno ahora, tanto software subterráneo, lo siento, pero recuerdo que en el foro oficial de autoit existe una herramienta de línea de comandos similar para iniciar una aplicación que establece el tiempo de espera, y tal vez en la herramienta NIRCMD, o ps2exec, verifique sus archivos de ayuda, o alguien dentro de los kits WAIK.
Esto es lo único que puedes hacer:
@Echo OFF
:: First launch the app in background mode, because some applications stops the execution of CMD.
Start /B "./Dir/Your app.exe"
:: Then stay in background for a certain time
Timeout /T "Seconds"
:: Continue your code...
Pause&Exit
start yourprogram.exe
timeout /t 60
taskkill /im yourprogram.exe /f