2009-08-26 17 views
21

Estoy trabajando con Windows 7 y tengo una aplicación que devuelve cero (0x0) cuando tiene éxito y una (0x1) en situaciones de error.¿Cómo reconoce Windows Scheduler en Win7 una tarea fallida?

He programado esta aplicación usando el Programador de tareas de Windows. He marcado los cuadros de opción "Si la tarea falla, reinicie cada" e "Intente reiniciar hasta:".

Pensé que un código de retorno distinto de cero de la aplicación sería suficiente para activar la tarea para reiniciar después del intervalo dado. Pero nada pasa.

¿Alguna idea de cuál podría ser el problema? Traté de googlearlo pero no encontré nada relevante.

Respuesta

6

He tenido el mismo problema en un Windows 2008 server Windows Task Scheduler. la acción de retorno de un código distinto de cero, pero el planificador Tenga en cuenta la tarea completada:

Task Scheduler successfully completed task "\SET Tasks\Scheduled task [Backup SET Server]" , instance "{...}" , action "C:\Windows\SYSTEM32\cmd.exe" with return code 1. 

que he encontrado en la web una sola respuesta:

El Programador de tareas de Windows no lo hace examineel código de salida o cualquier otro valor cuando finalice su tarea. Usted debe manejar cualquier error al procesar dentro de su propia secuencia de comandos o programa.

... en este documento: www.onlinetoolworks.com/docs/winTaskSched.doc

Así que creo ahora que la única manera Para solucionar este problema puede ser utilizar tarea disparo en caso. Estoy investigando

Saludos,

Olivier.

+0

No logré que funcione con la activación de la tarea en el evento. – Olivier

+0

He enviado una sugerencia a MS Feedback Hub [Windows Task Scheduler no examina el código de salida] (http://aka.ms/a5p0w2). Puedes votar por él (el enlace solo funciona en Win10) –

3

Puede,

  1. activar la historia de la Lista (si no está ya)
  2. en una historia "Acción completado" click derecho "adjunta de tareas para este evento ..."
  3. Establecer un filtro personalizado así:

    * [Sistema [(EventID = 201)]] y * [EventData [Datos [@ name = 'ResultCode'] = '1']]

Disfrute

Tilo

utilizado en Windows 2008 R2 (Exchange como servidor de correo electrónico)

+1

Hola Tilo, estoy luchando con el mismo problema y probé tu técnica de filtro personalizada, pero el evento sigue encendiéndose. Necesito que se dispare solo de vez en cuando y solo un par de veces. ¿Podría ampliar un poco la solución sugerida? – Johannes

10

crear una nueva tarea y establecer la consulta de eventos personalizado como esto:

<QueryList> 
    <Query Id="0" Path="Microsoft-Windows-TaskScheduler/Operational"> 
    <Select Path="Microsoft-Windows-TaskScheduler/Operational">*[System[EventID=201]] and *[EventData[Data[@Name='ResultCode']!='0']] and *[EventData[Data[@Name='TaskName']='\YOUR TASK NAME HERE']]</Select> 
    </Query> 
</QueryList> 

Ajuste los parámetros de disparo avanzado para retrasar la tarea por un período de tiempo como 15 minutos.

Configurar la acción de la nueva tarea para iniciar un programa:

programa/script:

schtasks 

Añadir argumentos:

/Run /TN "\YOUR TASK NAME HERE" 

Este programará el original tarea para ejecutar nuevamente 15 minutos después de que se registra un código de resultado distinto de cero en el evento.

+1

Válido y funciona en Windows 10. Cabe señalar que esta solución es una tarea programada adicional que está configurada para supervisar las ejecuciones fallidas (devoluciones no nulas) por lo que cualquier secuencia de comandos se ejecuta en la tarea original debe enviar los códigos de retorno adecuados. Recordando de forma crucial que debe establecer un retraso de al menos un minuto y que debe implementar un failsafe para evitar que el script original vuelva a funcionar para siempre. Sigue siendo una gran respuesta, felicitaciones. – Lewis

+1

Espera, ¿esto solo está configurando un activador personalizado para volver a iniciar la tarea en un código de salida distinto de cero? – jpmc26

Cuestiones relacionadas