次の方法で共有


Windowsタスクのエラー検知について

質問

2013年1月17日木曜日 15:50 | 1 票

Windowsタスクの初心者です。

タスクスケジューラーからバッチファイルを実行する際に、

バッチファイルで終了コード(正常終了、エラー終了等のコード)を返却して

Windowsタスクで検知することは可能でしょうか?

上記で分かりづらいようでしたら、やりたいことは下記の通りです。

①タスクスケジューラーからバッチファイルを起動したい

②バッチファイル処理のエラー終了を検知したい

③可能であればエラーも細分化して原因を検知したい

実現方法を教えていただけますでしょうか?

宜しくお願い致します。

すべての返信 (5)

2013年1月17日木曜日 16:25

バッチの exit コマンドで exit code を指定すれば、cmd.exe プロセスの exit code にはなります。(それをタスクスケジューラが拾ってくれるかどうかは確認してません)


2013年1月20日日曜日 13:34

ご回答ありがとうございます。

私が知りたい点は「タスクスケジューラが拾ってくれるかどうか」という箇所でした。

(JP1のようなことがWindowsのタスクスケジューラで可能か否か)


2013年1月20日日曜日 16:56

C:\schtasks /query /tn test /v /fo list

...
TaskName:                             \test
...
Last Result:                          1234
...
Task To Run:                          cmd.exe /c exit 1234


2013年1月20日日曜日 23:12

私が知りたい点は「タスクスケジューラが拾ってくれるかどうか」という箇所でした。

質問文が不明確でおかしいと思って見ていました。本当にタスクスケジューラが拾って欲しいのですか? 質問者さんは何も考えていないだけに聞こえます。

何のプログラムがエラーを発するのですか? 「可能であればエラーも細分化して原因を」とありますが、細分化したエラーを発するプログラムが質問文に書かれていません。エラーが発生したプログラムが細分化した原因を出力すれば細分化した原因が得られますし、出力しなければ得られない。とても当たり前なことであり、質問に含まれている理由が理解できません。
次に、発せられたエラーをどのプログラムを受け取るのですか? 「検知したい」とありますが、検知とは何を指しているのか書かれていません。検知した後、何らかのアプトプットがなければ検知したことにはならないのではありませんか?


2013年1月22日火曜日 1:01

 JP1が例に挙げられていますので、おそらくはタスクスケジューラーで条件によってステップ実行できるかという質問だと思われます。

 Windows標準のタスクスケジューラーでは、条件に従って指定されたプログラム等を起動するだけで、ステップ実行はできないと記憶しています。

 代替案ですが、例えばSQL Serverが使用できるのであればSQL Server Agentでステップ実行ができますので、プログラムの戻り値を判定して、様々な処理を行うことができます。(SQL Server Express EditonでもAgentはインストールされます)

 もしくはWindowsタスクマネージャであれば、バッチファイルなりPowerShellのスクリプト内で戻り値を判定するなど、あくまでのそのスクリプト内で処理する必要があります。(他の方々が言われているのはこちらの方だと思います)