ネットワークドライブの割り当てで使用しているフォルダ内にあるファイルをコピーするバッチファイルを作成して、定期的に実行するためにタスクスケジューラに登録しました。
バッチを直接実行した場合は問題なく処理できますが、タスクスケジューラではうまく動きませんでした。
これでは困るので、原因を調査しました。
目次
タスクスケジューラで実行結果が0×1
上にも書いている通り、バッチを直接実行した場合は問題なくコピーができています。
ただし、タスクスケジューラでは実行結果が0×1で失敗しています。
タスクスケジューラで「操作」の「引数の追加」で
c:\test\test.log
ログを出力としてログを出力したんですが、コピーコマンドの実行行が出力されているだけでエラーは出ていません。
調べてみたところ、全般で「ユーザがログオンしているかどうかに関わらず実行する」または「最上位の特権で実行する」を選択していた場合、ネットワークドライブの割り当てで登録したユーザとパスワードを使用していないため、ネットワークドライブが認識できないということがわかりました。
対応方法は?
対応方法についてですが、ネットワークドライブの割り当てコマンドをバッチ内に記述するということです。
net use Z: \\xxx.xxx.xxx.xxx\共有フォルダ /user:ユーザID パスワード
コピー処理
net use Z: /delete
これで、無事実行することができました。
まとめ
簡単なコピーバッチなので何の問題もなく実行できると思っていましたが、こんな落とし穴があったとは・・・
単体の実行だけでなく、タスクスケジューラで実行してみないと分からないことがよくありますので注意が必要ですね。