Desde el símbolo del sistema: ¿Cómo cronometrar la salida de un programa?

Desde el símbolo del sistema: ¿Cómo cronometrar la salida de un programa?

Quiero encontrar una manera de utilizar el símbolo del sistema para cerrar un programa en digamos... 60 segundos. Similar al apagado programado de la computadora (shutdown /s /t ) y la tarea.

¿Algunas ideas? es posible?

Respuesta1

¿Cómo puedo cerrar un programa en digamos... 60 segundos?

Puede utilizar pingo timeoutpara producir un retraso de tiempo.

  • timeoutno está disponible en Windows XP.
  • timeoutte da una cuenta regresiva.

pingsolución

Para matar notepaddespués de 60 segundos usa el siguiente comando:

ping 127.0.0.1 -n 61 > nul && taskkill /im notepad.exe

Nota:

  • Necesita 61 pings ya que hay un retraso de 1 s entre pings.

Ejemplo:

F:\test>time /t && ping 127.0.0.1 -n 61 > nul && taskkill /im notepad.exe && time /t
17:56
SUCCESS: Sent termination signal to the process "notepad.exe" with PID 8084.
17:57

También se puede producir un retraso mediante el comando PING con una dirección loopback, hay un retraso de 1 segundo entre cada ping consecutivo. En las pruebas, PING consume menos tiempo de procesador que Sleep.exe o Timeout.exe, esto permite que otros procesos se ejecuten en segundo plano. El comando PING sólo se puede interrumpir con Ctrl-C. Fuente: Clay Calvert (usenet 2001).

por ejemplo, para un retraso de 40 segundos:

PING -n 41 127.0.0.1>nulo

Fuentese acabó el tiempo


timeoutsolución

Para matar notepaddespués de 60 segundos usa el siguiente comando:

 timeout /t 60 && taskkill /im notepad.exe

Notas:

  • timeoutno está disponible en Windows XP.
  • timeoutestá mal implementado. Si realiza un "tiempo de espera 1", esperará hasta el "siguiente segundo", lo que podría ocurrir en 0,1 segundos. Intente realizar el "tiempo de espera 1" varias veces y observe la diferencia en el retraso. Durante 5 segundos o más, puede que no sea gran cosa, pero con un retraso de 1 segundo funciona mal.

Ejemplo:

F:\test>time /t && timeout /t 60 && taskkill /im notepad.exe && time /t
18:07

Waiting for  0 seconds, press a key to continue ...
SUCCESS: Sent termination signal to the process "notepad.exe" with PID 5412.
18:08

Otras lecturas

Respuesta2

Intenta usarProgramador de tareas.

  1. Configure el registro de eventos para que se genere un evento cuando se inicie el programa deseado.
  2. Configure una tarea programada para que se ejecute cuando se registre el evento particular del n.° 1. En la tarea programada, se puede establecer un retraso (60 segundos en su caso) y se puede ejecutar cualquier comando/script.

Respuesta3

Pruebe mi ejemplo:

choice /t 5 /d a /c ab /n >nul & taskkill /im URprocess.exe

Explicación: "elección" espera 5 segundos y sale, luego taskkill cierra "URprocess"

Respuesta4

Utilizo scriptrunner.exe suministrado con Windows 10. Tuve que buscar el mío, no estaba en la ruta. Puede encontrar documentación enhttps://ss64.com/nt/scriptrunner.html

A menudo convierto un montón de libros electrónicos a epub, pero la conversión a menudo se queda a medio camino. Entonces hice un lote con el siguiente contenido.

@echo off
for /F "delims=" %%a in (files.txt) do (
  if not exist "%%a.epub" ScriptRunner.exe -appvscript "c:\Program Files (x86)\calibre2\ebook-convert.exe" "%%a" "%%a.epub" -appvscriptrunnerparameters -timeout=60
  if exist "%%a.epub" del "%%a"
)

Files.txt contiene todos los archivos con rutas que deben convertirse. Utilizo ebook-convert.exe de calibre para realizar la conversión. El argumento -timeout=60 es el tiempo en segundos (aquí 60) después del cual se detiene la ejecución, si la conversión está lista antes, se ejecuta la siguiente línea.

Todo esto funciona bien.

información relacionada