2009-08-26 6 views
21

私はWindows 7で作業していますが、エラーが発生した場合は0(0x0)、エラーの場合は1(0x1)を返すアプリケーションがあります。Win7のWindowsタスクスケジューラは失敗したタスクをどのように認識しますか?

Windowsタスクスケジューラを使用してこのアプリケーションをスケジュールしました。 「タスクが失敗した場合は、すべてを再起動します」と「再起動を試行します:」のオプションボックスをチェックしました。

私は、アプリケーションからのゼロ以外の戻りコードは、所定の間隔の後にタスクを再起動するのに十分であると考えました。しかし、何も起こりません。

何が問題なのですか?私はそれをgoogleにしようとしましたが、関連するものは見つかりませんでした。

答えて

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

だから私はこの問題を回避する唯一の方法は、イベントでトリガタスクを使用してもよいことになりまし思う:この文書で

...。私は調査中です。

ありがとうございます。

Olivier。

+0

私はそれをイベントでタスクトリガで動作させることはできませんでした。 – Olivier

+0

私はMSフィードバックハブ[Windowsタスクスケジューラは終了コードを検査しません](http://aka.ms/a5p0w2)に提案を提出しました。あなたはそれに投票することができます(リンクはWin10のみで動作します) –

3

あなたがすることができ、

  1. は(まだない場合は)スケジュールの履歴を有効
  2. 歴史上のこのイベントにタスクを添付」右クリック「アクションが完了し、」...「
  3. は次のようにカスタムフィルタを設定します。

    * [システム[(イベントID = 201)]]と* [EventDataの[データ[]名= 'のResultCode' @ = '1']]

ウィン2008 R2(電子メールサーバーなど、Exchange)で使用

は、Tilo

をお楽しみください

+1

こんにちはTilo、私は同じ問題で苦労しています。カスタムフィルタ技術を試しましたが、イベントは発砲し続けます。私はそれを頻繁に、そしてたった2回だけ発火させる必要があります。提案されたソリューションの一部を拡張できますか? – Johannes

10

新しいタスクを作成し、このようなカスタムイベントクエリを設定します。トリガーを設定し

<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

有効で、Windows 10で動作します。このソリューションは、失敗した実行(ゼロ以外の戻り値)を監視するように構成された追加のスケジュールされたタスクであるため、元のタスク適切なリターンコードを送信する必要があります。重要なことは、少なくとも1分の遅れを設定し、元のスクリプトが永遠に再実行されないようにフェールセーフを実装する必要があるということです。それでも素晴らしい答えです。 – Lewis

+1

待って、これはちょうどゼロ以外の終了コードでタスクをもう一度起動するカスタムトリガーを設定していますか? – jpmc26

関連する問題