タスクスケジューラでバッチファイルが実行できないときの対処方法

bat bat

タスクスケジューラでバッチファイルが実行できないときに確認すべき点を紹介します。

実際に私もタスクスケジューラでバッチファイルを実行させようと設定をしたときにハマった事象です。

広告

バッチファイルが実行されない事象

タスクスケジューラでバッチファイルを実行させようと登録したはよいものの、手動で実行してもうまく実行されない状態です。

しかも「履歴」を見てみても「正常に完了しました」という表示になっているのでよくわからない事象に思えます。

「履歴」を見てみても「正常に完了しました」という表示になっている状態

しかし、ちゃんと原因はありました。

広告

原因は「プログラムが実行される場所」

「履歴」の中身をよく見てみると、「開始された操作」というカテゴリログの中に

"C:\Windows\SYSTEM32\cmd.exe" を開始しました。

というログがでており、このプログラムが「C:\Windows\SYSTEM32\cmd.exe」で開かれたコマンドプロンプト上で実行されることが分かります。

特に何も設定を入れていなければ、
「C:\Windows\SYSTEM32\cmd.exe」で開かれたコマンドプロンプトは「C:\Windows\SYSTEM32\」がカレントディレクトリとなっています

実際に実行してみれば分かりますが、
バッチファイルをコマンドプロンプト上でフルパスで実行してみても、バッチファイルが存在するフォルダで実行しないと、正常に実行されません。

今回は、「C:\hogehoge\」にある「test.bat」を実行すると「test.txt」に [aaa] と記載するというバッチファイルを用意しましたが、
実際に「C:\Windows\SYSTEM32\」などの別の場所で実行しても、コマンドプロンプト上は実行されるように見えますが、実際にファイルに追記などはされません。

バッチファイルが存在するフォルダとは別のフォルダで実行されたプログラム

したがって、
プログラム実行される場所が、バッチファイルが存在するフォルダになっていないことが原因でタスクスケジューラでうまく実行できていませんでした。

広告

タスクスケジューラでバッチファイルが実行できないときの対処方法

上記のとおり、
プログラムの実行される場所が、バッチファイルが存在するフォルダになっていないことが原因
なので、
タスクスケジューラで実行する際のパスを指定することで解決することができます。

・該当のタスクの「プロパティ」を開き、「操作」タブからプログラムの実行を定義している項目を編集し、「開始(オプション)」でバッチファイルがあるフォルダのパスを指定します。

該当のタスクの「プロパティ」を開き、「操作」タブからプログラムの実行を定義している項目を編集し、「開始(オプション)」でバッチファイルがあるフォルダのパスを指定

これでタスクスケジューラを起動してみると、正常に起動できるかと思います。^^

私も以下の通り、正常に実行されて「test.txt」に [aaa] と記載されたことを確認できました。^^

正常に実行されて「test.txt」に [aaa] と記載された

コメント

タイトルとURLをコピーしました