Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python脚本在失败后触发Windows任务计划重新启动_Python_Windows_Error Handling_Scheduled Tasks - Fatal编程技术网

如何使用python脚本在失败后触发Windows任务计划重新启动

如何使用python脚本在失败后触发Windows任务计划重新启动,python,windows,error-handling,scheduled-tasks,Python,Windows,Error Handling,Scheduled Tasks,我有一个python脚本,当我发现错误时抛出sys.exit(1)。这将导致任务计划程序在上次运行结果下显示“(0x1)”注释。成功运行将返回“操作已成功完成。(0x0)”。不幸的是,即使在设置下我选中了“如果任务失败,重新启动每一个:”复选框,这也不会触发任务再次运行。关于如何改进这一点有什么想法吗 另一个帖子有以下答案,但我找不到放置自定义过滤器的位置?在四种设置下;创建一个基本任务,当记录事件时,执行操作,完成 你可以 1激活计划的历史记录(如果尚未激活) 2在历史记录“操作已完成”上,右

我有一个python脚本,当我发现错误时抛出sys.exit(1)。这将导致任务计划程序在上次运行结果下显示“(0x1)”注释。成功运行将返回“操作已成功完成。(0x0)”。不幸的是,即使在设置下我选中了“如果任务失败,重新启动每一个:”复选框,这也不会触发任务再次运行。关于如何改进这一点有什么想法吗

另一个帖子有以下答案,但我找不到放置自定义过滤器的位置?在四种设置下;创建一个基本任务,当记录事件时,执行操作,完成

你可以

1激活计划的历史记录(如果尚未激活) 2在历史记录“操作已完成”上,右键单击“此事件的附加任务…” 3按如下方式设置自定义过滤器:


*[System[(EventID=201)]和*[EventData[Data[@Name='ResultCode']='1']]

如果已启用任务计划程序的事件历史记录,则可以为每个应重新启动任务的退出代码添加触发器。使用自定义XML查询触发“在事件上”。触发器可能至少应延迟30秒,以阻止重新启动任务的尝试

下面是一个示例查询。它查找事件ID 201(操作已完成),任务名为“\PyTest”(使用完整路径,从根“\”文件夹开始),退出代码为0xC000013A(即状态为“
STATUS\u CTRL\u C\u exit
,即控制台进程被CTRL+Break终止)


*[系统[EventID=201]]和
*[EventData[Data[@Name='TaskName']='\PyTest']]和
*[EventData[Data[@Name='ResultCode']='0xC000013A']]

那么,如果我感到困惑,我应该把它放在哪里呢?这是一项全新的任务吗?另外,我假设我在这里更改的唯一一件事是对计划任务名称的PyTest?向现有任务(而不是新任务)添加触发器。修改我的示例查询以使用任务名称(使用完全限定路径)和指示任务应重新启动的退出代码。似乎不起作用。我的路径是“C:\Windows\System32\Tasks\Hamilton”,我尝试过结果代码(0x1)、“0x1”和“1”,但似乎都不起作用。我了解到的另一个任务可以在哪里调度的位置C:\Windows\Tasks没有我的任务,我指的是任务调度程序库中的任务完整路径,而不是磁盘上的。通常,用户在库的根文件夹中创建任务,例如我的示例
\PyTest
。结果代码可以是十进制或十六进制。另外,请确保任务计划程序正在“历史记录”选项卡中创建事件。如果没有,请启用“所有任务历史记录”。