【バッチ、Windows】フォルダをコピーしまくりたいときに便利なコマンド「Robocopy」
はじまり


基本的な構文だけだとフォルダをコピーできないのだ。
最近、フォルダをコピーする機会が多く、そのときに「Robocopy」コマンドを打つことが多くなったので、ここらで集中的に記事としてまとめたいと思います。



「a」フォルダに画像のとおりにファイルとフォルダを入れて以下のコマンドを打ってみる。
robocopy a b
すると、「foruda」フォルダがコピーされていないことが確認できる。


僕がいつも使ってるrobocopy文
僕がいつも使うときは、大抵まるっとコピーしたいので、以下の文を使います。
robocopy a b /s /eすると・・・



S: サブディレクトリをコピーして、空のディレクトリはコピーしない。E: 空のサブディレクトリもコピーする。
コピー元から削除したい場合の書き方
このrobocopyなんだが、コピーだけじゃなく移動もできます。 さっき作った「b」フォルダを「c」としてコピーします。
この文を実行すると、以下の画像のようになる。
robocopy b c /s /e /mov

また、この文を実行すると、 以下の画像のようになる。
robocopy b c /s /e /move




フォルダ構造だけコピーしたい場合の書き方
ファイルは要らねえ!フォルダだけくれ!っていうケースを紹介します。
「a」フォルダに以下のファイルとフォルダを追加します。

以下の2つのコマンドを比べてみると、/nocopyを入れたらファイルがコピーされずにフォルダ構造だけコピーされていることが確認できる。
robocopy a b /s /e

robocopy a b /s /e /nocopy

大量のファイルとフォルダをコピーする場合に役立ちそうなオプション
HDDとかSSDに自分が個人レベルで持っているデータをバックアップとかで保存したいときに役立ちそうなオプションを紹介するよ。以下の4つ。
/j:バッファに蓄積せずにコピー。メモリ使用量を削減。/purge:コピー先フォルダが既にある場合に、コピー元フォルダに存在しないコピー先フォルダ内のファイル・フォルダを削除する。/minage:yyyymmdd:コピー元フォルダ内の更新日時が指定日時より新しいファイルを除外する。/XNで新しいのを除外。/XOで古いのを除外。
/j:バッファに蓄積せずにコピー。メモリ使用量を削減。
まず、/jを使って、「b」フォルダを作ります。
robocopy a b /s /e /j

/purge:コピー元フォルダにないものはコピー先フォルダで削除。
そして、「a」フォルダからtest.txtを消します。その状態で、/purgeすると、「b」フォルダからtest.txtが無くなるんだわ。
robocopy a b /s /e /j /purge
/XN:コピー元が新しいとコピーされなくする


この状態で、次のコマンドを打つと、 古いのだけコピーされる。
robocopy a b /s /e /j /purge /XN
/XO:コピー元が古いとコピーされなくする


このコマンドを打つと、新しいのだけコピーする増分バックアップができる。
robocopy a b /s /e /j /purge /XO
/minage :コピー元フォルダ内の更新日時が指定日時より新しいファイルを除外する。
そして、前にバックアップした日付をメモっていれば、/minageでコピー先に古いファイルのままにしたままで、バックアップもできる。


この状態で以下のコマンドを実行すると・・・
robocopy a b /s /e /j /purge /minage:20111026
おしまい


参考になったサイト

以上になります!
記事を共有
この記事が役に立ったなら、ぜひ他の人と共有してください!