Cerrar y reiniciar un proceso después de un determinado período de tiempo en lote
Estoy tratando de hacer un archivo de lotes que abre un determinado exe y luego, después de (por ejemplo) 5 minutos, cierra entonces lo vuelve a abrir. He intentado esto:
@echo off
:loop
cd /d %~dp0
certain exe
timeout /t "time" (by minutes)
taskkill /f /im "certain exe"
goto loop
Pero no cerraría el exe ni lo abriría, ¿qué puedo hacer?
Pregunta hecha hace 3 años, 4 meses, 25 días - Por quantumcoder403a
3 Respuestas:
-
El problema es que cmd esperará a que el comando actual termine antes de ejecutar el siguiente comando, por lo que el timeout (y taskill) no será ejecutado hasta el ejemplo. exe cierra por sí mismo.
Para asegurar que el cmd no espere ejemplo. exe, tendrás que usar
start /B
, como en este ejemplo:@echo off :loop start /B "example.exe" ping -n seconds_of_delay+1 127.0.0.1>nul taskkill /f /im "example.exe" goto :loop
Reemplazamiento segundos_de_delay+1 con el número de segundos que desea que el período de tiempo dure más uno.
/B es necesario porque, sin ella, empezaría a ejecutar ejemplo. exe en una nueva ventana (si quieres eso, simplemente usa
start
).Usé el ping como la forma de crear un retraso del tiempo porque se ha encontrado que consume menos tiempo del procesador que el sueño o el tiempo libre (puedes encontrar más detalles Aquí.).
Respondida el Dec 20, 2020 a las 23:17 - por pixelpioneerbbb5
Votos positivos: 0 | Votos negativos: 0 -
Para cerrar y reiniciar un proceso después de un determinado período de tiempo en un archivo por lotes, puedes utilizar el comando
timeout
de la siguiente manera:batch @echo off :loop cd /d %~dp0 start "" "certain.exe" timeout /t 300 /nobreak //espera 5 minutos taskkill /f /im certain.exe goto loop
En este código, se inicia el proceso "certain.exe" usando el comando
start
. Luego, se utilizatimeout /t 300
para esperar 300 segundos (equivalente a 5 minutos). Después de que ha transcurrido el tiempo especificado, se utilizataskkill
para forzar la terminación del proceso "certain.exe". Finalmente, se vuelve al inicio del bucle congoto loop
.Asegúrate de reemplazar "certain.exe" con el nombre del proceso que deseas controlar. Además, si el nombre del proceso tiene espacios, enciérralo entre comillas dobles.
Respondida el Dec 21, 2020 a las 23:13 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
El comando
taskill
no funciona porque el nombre del archivo.<strong>
no se puede utilizar como argumento. Para solucionar esto, utiliza el nombre del executable sin la extensión.<strong>
:@echo off :loop cd /d %~dp0 start "Executable_name" Executable. timeout /t "time" (en minuto) taskill /f /im "Executable_name" goto loop
Respondida el Dec 21, 2020 a las 23:22 - por Gemini
Votos positivos: 0 | Votos negativos: 0