2016-09-12 23 views
1

私はsys.exit(1)を投げるときにエラーが見つかるとpythonスクリプトを持っています。この結果、タスクスケジューラは最後に実行された結果の下に "(0x1)"というコメントを表示します。実行が成功すると、「操作は正常に完了しました。(0x0)」が戻されます。残念ながら、この設定では「タスクが失敗した場合は、すべてを再起動します」というチェックボックスがオンになっていても、タスクを再実行するようにはなりません。どのようにこれを改善するための任意の考えですか?Windowsタスクをトリガする方法Pythonスクリプトで失敗した後の再起動スケジュール

別の投稿には次の回答がありますが、カスタムフィルタを配置する場所が見つかりませんでしたか? 4つの設定の下で。右クリック「とは、タスクを添付「アクションが完了した」歴史上の基本的なイベントが記録されたタスク、アクション、完了

することができます、

1(既にいない場合)アクティブ化スケジュールの履歴 2を作成します。このイベント... " 3このようなカスタムフィルタを設定します。

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

答えて

1

タスクスケジューラのイベント履歴が有効な場合、タスクを再起動する必要がある各終了コードごとにトリガを追加できます。カスタムXMLクエリを使用して「イベントに」トリガーします。タスクを再開しようとすると、トリガーが少なくとも30秒遅れることがあります。

ここでは例のクエリです。 "\ PyTest"という名前のタスク(ルート "\"フォルダから始まるフルパスを使用)と0xC000013Aの終了コード(つまり、STATUS_CTRL_C_EXIT、つまりCtrlで殺されたコンソールプロセス)を使用して、イベントID 201 +ブレイク)。

<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

ここで私は混乱していますか?これは全く新しい仕事ですか?また、私がここで変更する唯一の事は、PyTestがスケジュールされたタスクの名前だと仮定していますか? –

+0

既存の*タスクにトリガを追加します(新しいタスクではありません)。あなたの*タスクの名前(完全なパスを使用する)とタスクを再起動する必要があることを示す終了コードを使用するように、私のサンプルクエリを変更してください。 – eryksun

+0

動作していないようです。私のパスは 'C:\ Windows \ System32 \ Tasks \ Hamilton'で、結果コードは '(0x1)'、 '0x1'、 '1'は試しましたが、動作しないようです。私がタスクをスケジュールすることができる場所を学んだもう1つの場所C:\ Windows \ Tasksには私のタスクがありませんでした –

関連する問題