はじめに
あるフォルダ内のファイルを別フォルダにコピーする場合、「別フォルダに存在しないファイルのみコピーしたい」場合があります。
例えばあるフォルダ(左のフォルダ)があり、そのフォルダ内にあるファイルを別のフォルダにコピーするとします。
右のフォルダには、ファイル1、ファイル2、ファイル3、ファイル4とあり、左のフォルダにはファイル2、ファイル3があります。
つまり、ファイル1、ファイル4が存在していません。その存在しないファイル(ファイル1、ファイル4)のみをコピーすると以下のようになります。
- 【コピー元】に存在しないファイル → コピーされる
- 【コピー元】に存在するファイル → コピーされない(上書きもされない)
Windows では2通りの方法が考えられます。
- エクスプローラーからコピーする方法
- コマンドプロンプトからコピーする方法
この記事では、「別フォルダに存在しないファイルのみコピーする方法」について上記2通りで行う方法についてご紹介します。
エクスプローラーからコピーする方法
こちらが最も簡単です。なぜならエクスプローラ画面上でコピー & ペースト(貼り付け)すればいいだけだからです。
具体的にどうやればいいかといいますと、例えば下記画面のように2つのフォルダ(左がコピー元、右がコピー先フォルダ)があるとします。
各フォルダにはそれぞれファイルが存在します。
コピー元のファイルでコピーしたいファイルのあるフォルダをコピー(「Ctrl」+ 「C」)して、コピー先フォルダに貼り付け(「Ctrl」+ 「V」)をするだけです。
すると下記画面が表示されますので、「ファイルは置き換えずスキップする(S)」を選択します。
これにより少し待つと(ファイルサイズが大きいと時間が多少かかります)、コピーが完了します。
コマンドプロンプトからコピーする方法
エクスプローラー上では、コピー & ペーストで簡単に行うことができますが、手動で行うという手間が必要です。
しかし、運用などの仕事をしているとどうしてもバッチ処理で自動化したいケースがあります。そういう場合はコマンドプロンプトの robocopy コマンドを使って行うことをおススメします。
※ コマンドプロンプトは「スタートメニュー」から「コマンドプロンプト」と入力するか、「Windows」キー + 「R」と入力し「ファイル名を指定して実行」画面で「cmd」と入力しOKを押下すると表示されます。
- /E : 空のディレクトリを含むサブディレクトリをコピー
- /XC : 変更されたファイルを除外
- /XN : 新しいファイルを除外
- /XO : 古いファイルを除外
コマンドプロンプトには copy コマンドがありますが、robocopy では複雑なコピー処理が行えます。
また、コマンドプロンプトに robocopy /? と入力することで、さまざまな robocopy コマンドのオプションも確認できます。
ファイルパスを入力するのがめんどくさい場合
コピー元とコピー先のファイルパスを入力するのが、めんどくさいと感じたりどのファイルパスを入力すればいいかわからないときは、ファイルをマウスでクリックしてコマンドプロンプト画面上にドロップさせてみてください。
ファイルパスが自動で入力されますので、めんどくさい手間も省けファイルパスの入力ミスも防げます。
まとめ
この記事では、フォルダに更新日時が最新のファイルだけコピーする方法についてご紹介しました。
- エクスプローラ画面でファイルをコピー & ペースト
- コマンドプロンプトで robocopy コマンド実行
どちらで行っても結果は変わりませんが、一回やるだけならエクスプローラーで行い、何回も行うから自動化したい!と思ったときは、コマンドプロンプトでやることをおススメします。
※ 類似した記事で、「更新日時が新しいファイルのみコピーする方法」についてご紹介しています。よければ参考にしてください。