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

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

はじまり#

135ml avatar
135ml
ロボコピーだ。
リサちゃん avatar
リサちゃん
カワイイ響きじゃんよ

基本的な構文だけだとフォルダをコピーできないのだ。#

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

リサちゃん avatar
リサちゃん
ああっ?コピーするコマンドなんだから、`robocopy a b` 的な感じで打てばいいんだろう?
135ml avatar
135ml
そう慌てるでない。まあ、いっぺんそれで打ってみ。あ、aの中にサブフォルダとかも入れてみてね。空のほうが良いな。

「a」フォルダに画像のとおりにファイルとフォルダを入れて以下のコマンドを打ってみる。

Terminal window
robocopy a b

すると、「foruda」フォルダがコピーされていないことが確認できる。

リサちゃん avatar
リサちゃん
ハァァアン??
135ml avatar
135ml
これが`robocopy`の仕様なのだ。サブフォルダもコピーするためにはオプション値を入れなければならんのだ。これをいっつも忘れるんだよな・・・

僕がいつも使ってるrobocopy文#

僕がいつも使うときは、大抵まるっとコピーしたいので、以下の文を使います。

Terminal window
robocopy a b /s /e

すると・・・

リサちゃん avatar
リサちゃん
そうだよ、これだよ
135ml avatar
135ml
今入れたオプション値は以下の効果があるのよ。
  • S: サブディレクトリをコピーして、空のディレクトリはコピーしない。
  • E: 空のサブディレクトリもコピーする。

コピー元から削除したい場合の書き方#

このrobocopyなんだが、コピーだけじゃなく移動もできます。 さっき作った「b」フォルダを「c」としてコピーします。

この文を実行すると、以下の画像のようになる。

Terminal window
robocopy b c /s /e /mov

また、この文を実行すると、 以下の画像のようになる。

Terminal window
robocopy b c /s /e /move

135ml avatar
135ml
「/mov」だとコピー元フォルダの中のファイルが無くなって、 「/move」だとコピー元フォルダごと無くなるんだよね。
リサちゃん avatar
リサちゃん
なるほどなあ。 「/mov」は家の中のものを盗る泥棒猫で、「/move」は家ごと盗る結婚詐欺師って感じだね。
135ml avatar
135ml
おお・・・そうだといいな・・・

フォルダ構造だけコピーしたい場合の書き方#

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

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

Terminal window
robocopy a b /s /e

Terminal window
robocopy a b /s /e /nocopy

大量のファイルとフォルダをコピーする場合に役立ちそうなオプション#

HDDとかSSDに自分が個人レベルで持っているデータをバックアップとかで保存したいときに役立ちそうなオプションを紹介するよ。以下の4つ。

  • /j:バッファに蓄積せずにコピー。メモリ使用量を削減。
  • /purge:コピー先フォルダが既にある場合に、コピー元フォルダに存在しないコピー先フォルダ内のファイル・フォルダを削除する。
  • /minage:yyyymmdd:コピー元フォルダ内の更新日時が指定日時より新しいファイルを除外する。
  • /XNで新しいのを除外。/XOで古いのを除外。

/j:バッファに蓄積せずにコピー。メモリ使用量を削減。#

まず、/jを使って、「b」フォルダを作ります。

Terminal window
robocopy a b /s /e /j

/purge:コピー元フォルダにないものはコピー先フォルダで削除。#

そして、「a」フォルダからtest.txtを消します。その状態で、/purgeすると、「b」フォルダからtest.txtが無くなるんだわ。

Terminal window
robocopy a b /s /e /j /purge

/XN:コピー元が新しいとコピーされなくする#

この状態で、次のコマンドを打つと、 古いのだけコピーされる。

Terminal window
robocopy a b /s /e /j /purge /XN

/XO:コピー元が古いとコピーされなくする#

このコマンドを打つと、新しいのだけコピーする増分バックアップができる。

Terminal window
robocopy a b /s /e /j /purge /XO

/minage:コピー元フォルダ内の更新日時が指定日時より新しいファイルを除外する。#

そして、前にバックアップした日付をメモっていれば、/minageでコピー先に古いファイルのままにしたままで、バックアップもできる。

この状態で以下のコマンドを実行すると・・・

Terminal window
robocopy a b /s /e /j /purge /minage:20111026

おしまい#

135ml avatar
135ml
これがロボコピーだ。
リサちゃん avatar
リサちゃん
けっこう色々できるじゃんよ

参考になったサイト#

ペンギン avatar
ペンギン
このサイトがすごくゴリゴリ網羅されていました。もっと知りたかったらオススメです。

以上になります!

記事を共有

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

【バッチ、Windows】フォルダをコピーしまくりたいときに便利なコマンド「Robocopy」
https://endorphinbath.com/posts/batch-robocopy/
著者
kinkinbeer135ml
公開日
2021-11-02
ライセンス
CC BY-NC-SA 4.0
関連記事 スマート
1
【PowerShell】ffmpegとgif2webpでmp4動画のサイズを小さくしたい
Code ffmpegとgif2webpを使って、mp4ファイルからgifもしくはwebpの拡張子に変換して、サイズを減らす試みです。setpts=PTS/2で倍速にしたり、グローバルパレットや-vf scale=で画像の大きさを指定したりしています。
2
【SKYSEA、PowerShell】ソフトウェア配布先でバッチ以外の処理を実行させる
Software SKYSEAで配布先のPCでバッチ以外のファイルを実行する方法およびバッチファイルのコードを紹介します。バッチの遅延環境変数とか使っても出来ない処理をPowerShellで実行させたときに今回の処理を行いました。
3
今年食ったサバ缶のまとめ(2025年版:後編)
Mackerel 2025年に筆者が食べたサバ缶、イワシ缶、サンマ缶などを紹介します。個人的な美味しさ、DHAおよびEPAの含有量の目安なども掲載しています。
4
今年食ったサバ缶のまとめ(2025年版:前編)
Mackerel 2025年に筆者が食べたサバ缶、イワシ缶、サンマ缶などを紹介します。個人的な美味しさ、DHAおよびEPAの含有量の目安なども掲載しています。
5
【Cloud Scheduler】コンテナを動かすために必要なgcloudコマンドをシェル関数化する
Code Google Cloud上でデプロイされたコンテナを操作するためにシェル関数を構築します。その関数には処理が完了した時やエラー発生時に通知を行ったりヘルプ機能も実装します。
ランダム記事 ランダム
Profile Image of the Author
kinkinbeer135ml
SIerをやめて、プログラミングを勉強しています。※Amazonアソシエイトに参加しています。
お知らせ
私のブログへようこそ!これはサンプルのお知らせです。
音楽
カバー

音楽

再生中なし

0:00 0:00
歌詞なし
カテゴリ
タグ
サイト統計
記事
287
カテゴリー
8
タグ
93
総文字数
486,174
運用日数
0
最終活動
0 日前

目次