質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Q&A

1回答

5739閲覧

タスクスケジュール登録時のバッチ失敗通知について

batqusers

総合スコア0

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

0グッド

0クリップ

投稿2020/06/09 14:05

カテゴリが違うかもしれませんが教えていただけたら幸いです。

あるファイルのコピーを行うバッチを作成しそれをタスクスケジュールに登録し毎日実行する予定です。ファイルコピー自体の成功、失敗はバッチ内の記述でログをファイルに書き出すようにしているのですが該当のタスク自体が何らかの理由で動作しなかったり失敗した場合に、失敗したことをログファイル等に出力することは可能でしょうか。

以下案が思い浮かんだのですが実現可能でしょうか。
可能であれば実現するための詳細なコマンド等教えていただけますでしょうか。
1.イベントログで判断
①バッチ内で処理成功時に任意のイベントログを出力
②別タスクにて24時間以内に該当の処理成功イベントログがない場合、
失敗と判断しログファイルに出力するバッチを実行?

2.ログファイルで判断
①バッチ実行時に成功、失敗含めログ出力
②別タスクにてバッチ実行時のログを参照し、24時間以内に更新されていない場合は
失敗と判断しログファイルに出力するバッチを実行?

上記以外にもよい方法があれば教えていただけますでしょうか。
宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

どういう方法をとるにせよ「何らかの理由で動作しなかった」ことを検出するのは、要件をちゃんと整理しないと難しいと思います。例えば、前回のタスクの実行から24時間を超えても終了しない場合はどうするの?とか。

24時間以内に必ず終わるという前提であれば、検知する方法は何通りかあると思いますが。

例えば、タスクの実行結果は、タスクスケジューラで実行するバッチが成功時にEXIT /B 0で終了し、失敗時にEXIT /B -1で終了するようにしておけば、タスクスケジューラ上で「前回の実行結果」として判別できます。(単純に上記の終了コードを返すだけのバッチでも作って試してみて下さい)

「前回の実行時刻」を含め、これらの情報は、コマンドプロンプトであればschtasks /Query /V /TN (タスク名)で確認することができます。

コマンドプロンプトの場合、上記コマンドの出力結果は単なる文字列なんで、これを使って何かをやろうと思ったら文字列操作が必要になりますし、それが難しいのであればPowerShellを使った方がたぶん良いとは思いますけど。(方法はググってください)

投稿2020/06/09 14:40

編集2020/06/09 14:43
gentaro

総合スコア8947

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問