写真と、ビデオの整理をしていて、以下のようなことをやるために、Robocopyを使おうと考えました。
1. 写真とビデオを一つのフォルダの配下に日付のフォルダを作成して保存
C:\My Pictures\2021-09-15\写真
\2021-10-20\写真とビデオファイル
\2021-10-22\写真
\2021-10-25\写真とビデオファイル
2. 上記のCドライブから外付けドライブ(Dドライブ)にバックアップを作る際は、ファイルの拡張子を見て、静止画は「PHOTO」フォルダの配下に日付毎、動画は「VIDEO」の配下に日付毎に保管したかった。
D:\PHOTO\2021-09-15\写真
\2021-10-20\写真
\2021-10-22\写真
\2021-10-25\写真
D:\VIDEO\2021-10-20\ビデオファイル
\2021-10-25\ビデオファイル
3. さらに追加でネットワークドライブ(NASNE)にも上記と同様のフォルダ配置でバックアップをしたかった。
X:\PHOTO\2021-09-15\写真
\2021-10-20\写真
\2021-10-22\写真
\2021-10-25\写真
X:\VIDEO\2021-10-20\ビデオファイル
\2021-10-25\ビデオファイル
そこで初めてRobcopyを利用して、バックアップを取る方法を検討して以下のようにバッチファイルを作成しました。
robocopy "C:\My Pictures" "D:\PHOTO" *.gif *.jpg *.jpeg *.heic /s /fft /copy:DT /dcopy:T
robocopy "C:\My Pictures" "D:\VIDEO" *.mov *.m2ts *.modd *.moff *.mp4 *.mts /s /fft /copy:DT /dcopy:T
robocopy "C:\My Pictures" "X:\PHOTO" *.gif *.jpg *.jpeg *.heic /s /fft /copy:DT /dcopy:T
robocopy "C:\My Pictures" "X:\VIDEO" *.mov *.m2ts *.modd *.moff *.mp4 *.mts /s /fft /copy:DT /dcopy:T
このバッチを組んだところ、CからDドライブのコピーはうまくいくのに、CからXドライブへのコピー時に
「エラー 5 (0x00000005) ファイル属性を変更しています」や「エラー 5 (0x00000005) コピー先ディレクトリにタイムスタンプを追加しています」などのエラーが出て、カウントダウンが始まり、全然先に進まないという状態になりました。
いろいろググってみて、robocopyのオプションを追加したり、削除したりしてもエラーのコメントが変わるぐらいで、全く状況に変化なし。。。
これはだめかとあきらめそうになった時に、リトライ時間と、リトライ回数を変更する /r /w というオプションを発見。
そのまま/r:1 /w:1で1秒待って、1回リトライするという式に変更して強制的に進めてみたら、結論が分かったような気がします。
結論
ROBOCOPYで拡張子を指定してコピーを行う場合、フォルダに指定された拡張子が存在せず、特定の条件下(ネットワークドライブ??)ではエラーが発生するっぽいです。
つまり、ビデオファイルが無いフォルダーから、ビデオファイルを抜き出してコピーしろという指示を出すとエラー 5 (0x00000005)が発生すると。。。
なので、もし、そのような場合は、対象のファイルが入っていないフォルダはエラーを素早くリトライをして処理を進めていけば大丈夫そうです。
以下のような感じで、取り急ぎうまくいっているように見えてます。個人でのバックアップでは問題ないと思います(会社で使う場合は、オプションとかいろいろ確認されたほうが良いと思います。)
robocopy "C:\My Pictures" "X:\PHOTO" *.gif *.jpg *.jpeg *.heic /s /fft /copy:DT /dcopy:T /r:1 /w:1
robocopy "C:\My Pictures" "X:\VIDEO" *.mov *.m2ts *.modd *.moff *.mp4 *.mts /s /fft /copy:DT /dcopy:T /r:1 /w:1