【bat】xcopyのD:MM/DD/YYYYオプションを付けるだけではDオプションの効果がない


1日に何度も実行する「その日更新されたファイルをコピーする」batを作成した時に、少しだけハマったので備忘録として残します。

xcopyコマンド

ディレクトリ構造毎、ファイルをコピーするコマンド

Dオプション、D:MM/DD/YYYYオプション

Dオプション

コピー先に同名ファイルがある場合、更新日が新しい場合のみコピーする。

D:MM/DD/YYYYオプション

指定された日付以降に更新されたファイルだけをコピーする。

ハマった点

「D:MM/DD/YYYYオプション」のみだと「Dオプション」の効果はないので、指定された日付以降に更新されたファイルが毎回コピーされます。

未コピーの指定された日以降に更新されたファイルをコピーしたい場合は、「D:MM/DD/YYYYオプション」と「Dオプション」の両方を指定する必要がある。

rem D:MM/DD/YYYYオプションのみ
rem 実行する毎に更新日がMM/DD/YYYY以降のファイルがコピーされる
xcopy D:MM/DD/YYYY コピー元 コピー先

rem DとD:MM/DD/YYYYオプションを指定
rem 更新日がMM/DD/YYYY以降のファイルがコピーされる
xcopy /D /D:MM/DD/YYYY コピー元 コピー先

感想

参考に記載しているMicrosoft Docsだと分かりやすいので、しっかり公式リファレンスを確認するべきでした。

参考

xcopy
https://docs.microsoft.com/ja-jp/windows-server/administration/windows-commands/xcopy