概要
PC内の画像をNASにバックアップするバッチを、タスクスケジューラーで実行するようにしていたが、実は動作できていなかった。
原因はコピー先フォルダをネットワークドライブで指定していたためで、UNC形式で指定することで回避できた。
詳細
-
NASを購入したので内臓HDDの画像をバックアップしたく、NASの共有フォルダにSドライブを割り当て、次のようなbatファイルを作成した。
xcopy c:\*.jp* S:\WinDesktop\C-Drive /d /i /s > .\CopyPhotoLog-C.txt
-
手動で実行したときは問題なく動作してたので、タスクスケジューラーでデイリーバックアップするようにした。実行履歴も正常に動作しているようだった。
-
しばらくたって、バックアップが正常動作しているか心配になったので、手動でbatを実行してみると、バックアップされているはずの画像がコピーされてしまった。慌ててタスクスケジューラーの履歴を見ると確かにエラーが返っていた。
-
調べてみるとタスクスケジューラーでネットワークドライブにアクセスするときは、UNC接続しろという記述を発見。(https://qa.atmarkit.co.jp/q/1424)
確かにこれで動作するようになったが、理由がいまいちわからずモヤモヤ。 -
さらに調べてみると次の情報を発見。ネットワークドライブはユーザーが対話形式のログオンをしていないとネットワークドライブが使えないとのこと。
http://www.unirita.co.jp/blog/data-utilization/data-linkage/20140916-2.html
結論
ネットワークドライブの割り付けは対話形式のログオン時に割り当てられるため、タスクスケジューラーでの実行は利用できない。そのため、ネットワークフォルダを使用する際はUNC形式で指定するべし。
xcopy c:\*.jp* \\nas\WinDesktop\C-Drive /d /i /s > .\CopyPhotoLog-C.txt