はじめに
あるフォルダ内のファイルを別フォルダにコピーする場合、「更新日時が新しいファイルのみをコピーしたい」ケースがあります。
コピー前のフォルダ構成
例えばあるフォルダがあり、そのフォルダ内にあるファイルを別のフォルダにコピーするとします。
コピー後のフォルダ構成
紹介する方法では、コピー元のフォルダの更新日時が古いか新しいかで結果が変わるようにします。
簡単に言うとコピーしたあとすべてのファイルが最新の更新日時になります。
- 【コピー元】のファイル : 古い 【コピー先】のファイル : 新しい → 【コピー先】のファイルはコピーされない(変化なし)
- 【コピー元】のファイル : 新しい 【コピー先】のファイル : 古い → 【コピー先】のファイルは【コピー元】の新しいファイルにコピーされる
Windows では2通りの方法が考えられます。
- エクスプローラーからコピーする方法
- コマンドプロンプトからコピーする方法
この記事では、「更新日時が新しいファイルだけをコピーする方法」を上記2通りで行う方法についてご紹介します。
エクスプローラーからコピーする方法
こちらが最も簡単です。なぜならエクスプローラ画面上でコピー & ペースト(貼り付け)すればいいだけだからです。
具体的にどうやればいいかといいますと、例えば下記画面のように2つのフォルダ(左がコピー元、右がコピー先フォルダ)があるとします。
各フォルダにはそれぞれファイルが存在します。
コピー元のファイルでコピーしたいファイルのあるフォルダをコピー(「Ctrl」+ 「C」)して、コピー先フォルダに貼り付け(「Ctrl」+ 「V」)をするだけです。
すると下記画面が表示されますので、「ファイルごとに決定する(L)」を選択します。
どのファイルを保存しますか?と聞かれるので、保存するファイルを選択します。
このときに更新日時が新しいファイルはファイル情報が太字で表示されます(下記画面の赤枠)。そのファイルについてチェックを入れ「続行」をクリックする。
これにより少し待つと(ファイルサイズが大きいと時間が多少かかります)、コピーが完了します。
コマンドプロンプトからコピーする方法
エクスプローラー上では、コピー & ペーストで簡単に行うことができますが、ファイルが大量(100個や1000個)だとどうしても時間がかかりミスしてしまう可能性もあります。
そういう場合はコマンドプロンプトの robocopy コマンドを使って行うことをおススメします。
※ コマンドプロンプトは「スタートメニュー」から「コマンドプロンプト」と入力するか、「Windows」キー + 「R」と入力し「ファイル名を指定して実行」画面で「cmd」と入力しOKを押下すると表示されます。
- /E : 空のディレクトリを含むサブディレクトリをコピー
- /XO : 古いファイルを除外
コマンドプロンプトには copy コマンドがありますが、robocopy では複雑なコピー処理が行えます。
また、コマンドプロンプトに robocopy /? と入力することで、さまざまな robocopy コマンドのオプションも確認できます。
ファイルパスを入力するのがめんどくさい場合
コピー元とコピー先のファイルパスを入力するのが、めんどくさいと感じたりどのファイルパスを入力すればいいかわからないときは、ファイルをマウスでクリックしてコマンドプロンプト画面上にドロップさせてみてください。
ファイルパスが自動で入力されますので、めんどくさい手間も省けファイルパスの入力ミスも防げます。
まとめ
この記事では、フォルダに更新日時が最新のファイルだけコピーする方法についてご紹介しました。
- エクスプローラ画面でファイルをコピー & ペースト
- コマンドプロンプトで robocopy コマンド実行
どちらで行っても結果は変わりませんが、ファイル数が少ないときはエクスプローラーで行い、多いときはコマンドプロンプトでやることをおススメします。
※「更新日時ではなく存在しないファイルのみをコピーしたい」場合は下記リンクを参考にしてください。