14 votos

Programar una tarea de Windows cada minuto

Necesito programar una tarea de Windows para ejecutar un script cada minuto. En la mayoría de los casos, el script no necesita ejecutar nada y existe inmediatamente. Cuando el script necesita ejecutar algo, quiero que inicie el trabajo lo más rápido posible, por eso el intervalo de un minuto.

Ahora, la interfaz de usuario del Programador de Windows se ha vuelto bastante confusa en los últimos años, así que no estoy seguro de cuál es la mejor manera de ejecutar una tarea cada minuto (o 5 minutos ..) en Windows 2008 R2.

¿Es esta la mejor manera de programar una tarea en Windows cada minuto? ¿Es fiable? ¿Se inicia directamente después de reiniciar una máquina, o sólo se inicia de nuevo a las 12 de la noche? Tenga en cuenta que no puedo usar/escribir una aplicación de servicio personalizada para esto, ya que necesito que sea muy portátil.

0 votos

No, no es la mejor manera. Debes usar una función sleep o wait en tu script.

18voto

coryvb123 Puntos 211

Yo tenía este mismo requisito. En Server 2008, en realidad se puede modificar el Repite la tarea cada: desplegable. Por defecto, el valor más bajo es "5 minutos" pero puedes simplemente escribir "1 minuto" allí. Puede comprobarlo mirando el Disparadores y viendo que dice "... repetir cada 00:01:00..." . También puedes probar a teclear "10 segundos" y te saldrá un error diciéndote que elijas algo mayor a 1 minuto.

3 votos

Esta era la parte de la pregunta que me interesaba. Puedo confirmar que esto todavía funciona en 2012 R2.

8voto

davephan Puntos 51

Puedo programar una tarea para que se repita una vez por minuto con la línea de comandos "schtasks". Un ejemplo del código es:

schtasks /create /sc minute /mo 1 /tn "Task Name" /tr c: \temp\filename.exe

La tarea se muestra en la GUI de Windows 2008 R2 y se ejecuta una vez por minuto. La tarea debe crearse y modificarse con la utilidad de línea de comandos "schtasks".

Desafortunadamente, Microsoft diseñó tontamente el programador de tareas de Windows 2008 R2, dejando de lado la configuración flexible que se encontraba en el programador de tareas de Windows 2003, a favor de unas pocas opciones limitadas para los intervalos.

davephan

0 votos

Esto funciona en Win7. Gracias.

4voto

Andy Puntos 4237

Sí, este servicio se ejecutará después de reiniciar, puede verificarlo en el registro de transacciones del servicio del Programador de Tareas:

    Systemroot\\SchedLgU.txt

    (where Systemroot is your windows installation folder)

Si no funciona correctamente (en XP, no estoy seguro de su equivalente en 2008):

    Control Panel -> Administrative Tools -> Services -> Task Scheduler 

    Set to auto. 

2008 Documentación aquí , Documentación de XP aquí

La programación de la tarea comienza a la hora especificada, después se ejecuta en base a los parámetros de repetición. La hora de inicio se puede considerar como la hora de "instalación de la tarea", no forma parte de los parámetros de repetición (excepto como desplazamiento del temporizador). Espero que esto tenga sentido.

0 votos

En realidad me refería a que si la máquina se reinicia, la tarea se activa de nuevo directamente después de reiniciar ¿o sólo se inicia de nuevo a las 12 horas, como se especifica en la GUI? Necesito que la tarea se ejecute cada minuto, independientemente de un reinicio de la máquina, etc.

0 votos

Y, ¿cómo puedo saber si una tarea se ha ejecutado? ¿Se registra en algún lugar del registro de eventos? Parece que no puedo encontrar ninguna entrada de registro. Gracias.

0 votos

Respuesta actualizada para aclarar

-1voto

BuckDancer Puntos 11

Prueba esto, a mí me funcionó...

REM ================================================================

REM # M A I N B O D Y

REM ===============================================================

if "%1" == "" echo Uso:- C:\<strkeep>scripts<strkeep>\port_schtask.cmd ^ ^ && %SystemRoot% \system32\ping 127.0.0.1 -n 10 >nul && exit

si no existe C:\<strkeep>scripts<strkeep>\port.bat echo Uso:- El archivo NO existe C:\<strkeep>scripts<strkeep>\port.bat && %SystemRoot% \system32\ping 127.0.0.1 -n 10 >nul && exit

%SistemaRaíz%. \system32\schtasks /delete /tn "port.bat %1 %2" /f

%SistemaRaíz%. \system32\schtasks /crear /tr " C:\<strkeep>scripts<strkeep>\port.bat %1 %2" /SC MINUTO /MO 1 /tn "port.bat %1 %2" /RU "SYSTEM"

%SistemaRaíz%. \system32\SCHTASKS /run /TN "port.bat %1 %2"

%SistemaRaíz%. \system32\SCHTASKS |%SystemRoot% \system32\find.exe "port.bat %1 %2"

%SistemaRaíz%. \system32\schtasks /consulta /TN "puerto.bat %1 %2"

%SistemaRaíz%. \system32\ping 127.0.0.1 -n 10 >nul

rem ------------------------------------------------------

Saludos RJB

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: