bat

【BAT】フォルダの更新日時を維持してコピーする

はじめに

エクスプローラーでフォルダをコピーすると更新日時がフォルダ作成日時に変わります。中身のファイル自体の更新日時はそのままです。
テスト用に3日以前のフォルダが削除されるか確認するために過去日時のフォルダを作成したかった。

robocopyを使用

エクスプローラーを使わないで、Windows7 に標準で付属している「robocopy」コマンドを使用することでフォルダの更新日時を維持してコピーすることができる。

robocopy [コピー元] [コピー先] /E /DCOPY:T 

オプションについて
/E 空のディレクトリを含むサブディレクトリをコピーします。
/DCOPY:T ディレクトリのタイムスタンプコピーします。

フォルダコピーについて

フォルダ自体をコピーしたつもりが中身のファイルだけがコピーされてしまい、フォルダコピーってどうやるのか、思わず悩んでしまったので備忘録として残しておく。

コピー元に「hoge」フォルダだけを指定すると、中身だけがコピーされてしまう。

robocopy C:\AAA\hoge D:\BBB\ /E /DCOPY:T 

「hoge」フォルダ自体もコピーするには、コピー先にフォルダを指定する必要がある。

robocopy C:\AAA\hoge D:\BBB\hoge /E /DCOPY:T 

ちなみにコピー先のフォルダ指定はコピー元と同じである必要はないでの別の名前にしてもよい。

xcopyでも同様にコピー先にフォルダを指定する必要がある。
但し、xcopyではフォルダの更新日時を維持してコピーすることは出来ない。

echo d | xcopy C:\AAA\hoge D:\BBB\hoge /E

最後に

一般的にフォルダをコピーしても更新日時が維持されるばかりと思ってのに出来なかったんですね。案外、気にしないと分からないもんだ。

参照