robocopy

ファイルサーバのバックアップを行ったり、移行する際にデータのコピーをWindows標準のコマンド Robocopyをバッチファイルにしてタスクスケジューラに設定し、夜間に実行したり、ファイルが多すぎて一晩では終わらない場合にスケジュールして同期を行う場合があります。

その際に、エラーが起こってうまく実行できない場合があります。

NASの共有フォルダをネットワークドライブに割り当てでドライブをrobocopyでタスクを実行すると、(0x1)のエラーで終了します。

原因は、タスクスケジューラのタスクの作成設定で、一般タブで、

「ユーザがログオンしているかどうかに関わらず実行する」あるいは「最上位の特権で実行する」を選択している場合に起こります。

この場合、ネットワークドライブを接続している特定のユーザプロファイルで接続しているネットワークドライブが認識されずにエラーとなります。

この場合、

ネットワークドライブの接続をバッチファイル内に書いてやることうまく行きます。

コピー後、ネットワークドライブを削除します。

例:zドライブに割り当ててコピーし削除する。

net use z: \\192.168.0.1\hoge  /user:<ユーザID> <パスワード>
robocopy z:<コピー元パス> D:<コピー先フォルダ> <ファイル名>
net use z: /delet

 

コマンドのMicrosoft参考サイト

https://learn.microsoft.com/ja-jp/windows-server/administration/windows-commands/robocopy

 

その他にも

開始(オプション)が空白の場合に起こる場合がありますので、バッチファイルの場所を指定するとエラーが出なく場合があります。

参考にしたサイト

https://pentan.net/bat-task-0x1/