我正在使用Windows 7,我有一个应用程序在成功时返回零(0x0),在错误情况下返回一个(0x1)。
我已使用Windows任务计划程序安排此应用程序。我检查了选项框“如果任务失败,请重新启动”和“尝试重新启动:”。
我认为来自应用程序的非零返回代码足以触发在给定间隔后重新启动的任务。但没有任何反应。
任何想法可能是什么问题?我试图谷歌但没有发现任何相关的内容。
答案 0 :(得分:11)
创建一个新任务并设置自定义事件查询,如下所示:
<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>
将触发器高级设置设置为将任务延迟一段时间,例如15分钟。
配置新任务的操作以启动程序:
编程/脚本:
schtasks
添加参数:
/Run /TN "\YOUR TASK NAME HERE"
这将安排原始任务在事件中记录非零结果代码15分钟后再次运行。
答案 1 :(得分:6)
我在Windows 2008服务器Windows任务计划程序上遇到了同样的问题。 操作返回非零代码,但调度程序认为任务已完成:
Task Scheduler successfully completed task "\SET Tasks\Scheduled task [Backup SET Server]" , instance "{...}" , action "C:\Windows\SYSTEM32\cmd.exe" with return code 1.
我在网上发现只有一个答案:
Windows任务计划程序不 检查 退出代码或其他任何内容 任务完成时的值。您 必须处理任何错误处理 在你自己的剧本或程序中。
...在本文档中:www.onlinetoolworks.com/docs/winTaskSched.doc
所以我认为现在解决此问题的唯一方法可能是使用任务触发事件。我正在调查。
此致
奥利弗。
答案 2 :(得分:3)
你可以,
设置如下自定义过滤器:
* [System [(EventID = 201)]]和* [EventData [Data [@ Name ='ResultCode'] ='1']]
享受
的Tilo
用于Win 2008 R2(Exchange作为电子邮件服务器)
答案 3 :(得分:0)
虽然没有人回答标题问题。似乎任务计划程序无法检测失败的任务?当然,它必须有东西,因为它可以选择重新启动失败的任务!