2014年3月13日木曜日

タスクスケジューラでバッチファイルが実行できない

Windowsのタスクスケジューラでバッチファイルを実行しようとして、バッチファイルがうまく実行できないことがありました。
他のバッチファイルは実行できるのですが、特定のバッチファイルのみが実行できず、しかもタスクスケジューラは何が問題か教えてくれないので、原因が特定できず少しハマってしまいました。


その原因はずばり、カレントディレクトリにありました。

バッチファイルをエクスプローラーやコマンドプロンプトから実行しているときは、結果的にバッチファイルのディレクトリがカレントディレクトリになっているのですが、タスクスケジューラから実行する場合は、カレントディレクトリがバッチファイルのディレクトリになっていないのです。

そこで、バッチファイルの先頭にcdコマンドを挿入し、バッチファイルのディレクトリに移動するようにします。

cd C:\batch_dir

これでうまくいったのですが、その後、環境を変えた時にこれでもうまくいかないことがありました。
それはドライブが変わった時です。その場合はさらにカレントドライブも変更します。

D:
cd D:\batch_dir

つまらないところでハマってしまいました。

タスクスケジューラの履歴タブが無効になっているのを有効にする

タスクスケジューラのタスクのプロパティを表示したときに履歴タブが「履歴(無効)」となっていて実行時のログを確認できないことがあります。

これを有効にするには、イベンドビューアーから設定を変更します。イベンドビューアーはコントロールパネルの管理ツールの中にあります。

イベントビューアーの「イベントビューアー(ローカル)」→「アプリケーションとサービス ログ」→「Microsoft」→「Windows」→「TaskScheduler」とたどっていき、

右側ペインから「Operational」を右クリックしてプロパティを開きます。


プロパティの中から「ログを有効にする」のチェックボックスをオンにします。

その後、タスクスケジューラでF5キーを押して表示を更新するなり、タスクスケジューラを再起動するなりすれば、履歴タブの(無効)表示はなくなって、有効になります。

お試しください。