2016-09-12 98 views
1

我有一個python腳本,當我找到一個錯誤,我扔sys.exit(1)。這會導致任務計劃程序在上次運行結果下顯示「(0x1)」註釋。成功運行將返回「操作成功完成(0x0)」。不幸的是,雖然這不會觸發任務再次運行,即使在設置下我也有「如果任務失敗,重啓每一個:」複選框被選中。有關如何改善這一點的想法?如何觸發Windows任務計劃重新啓動後失敗與python腳本

另一個帖子有以下答案,但我找不到放置自定義過濾器的位置?在四個設置下;創建基本任務,當一個事件記錄,動作,完成

可以,

1激活歷史附表(如果沒有的話) 2上的歷史「行動已完成」右鍵點擊「附加任務以此事件...「 3設置像這樣的自定義過濾器:

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

回答

1

如果啓用了任務計劃程序的事件歷史記錄,則可以爲每個應該重新啓動任務的退出代碼添加一個觸發器。使用自定義XML查詢觸發「事件」。觸發器應該至少延遲30秒以遏制嘗試重新啓動任務。

下面是一個示例查詢。它使用名爲「\ PyTest」的任務(使用完整路徑,從根目錄「\」文件夾開始)和退出代碼0xC000013A(即STATUS_CTRL_C_EXIT,即由Ctrl鍵殺死控制檯進程)來查找事件ID 201 + Break)。

<QueryList> 
    <Query Id="0" Path="Microsoft-Windows-TaskScheduler/Operational"> 
    <Select Path="Microsoft-Windows-TaskScheduler/Operational"> 
     *[System[EventID=201]] and 
     *[EventData[Data[@Name='TaskName']='\PyTest']] and 
     *[EventData[Data[@Name='ResultCode']='0xC000013A']] 
    </Select> 
    </Query> 
</QueryList> 
+0

所以會在哪裏我把這個I M困惑?這是一項全新的任務嗎?另外我假設我在這裏改變的唯一東西是PyTest到計劃任務的名稱? –

+0

將觸發器添加到*現有*任務(不是新任務)。修改我的示例查詢以使用*您的*任務的名稱(使用完全限定的路徑)並指示您的任務應該重新啓動的退出代碼。 – eryksun

+0

似乎不起作用。我的路徑是'C:\ WINDOWS \ SYSTEM32 \任務\漢密爾頓',我試過結果代碼'(0x1)','0x1'和'1',似乎沒有工作。另一個位置,我知道可以在哪裏安排任務C:\ Windows \ Tasks在那裏沒有我的任務 –

相關問題