はじめに
最近、フォルダをコピーする機会が多く、そのときに「Robocopy」コマンドを打つことが多くなったので、ここらで集中的に記事としてまとめたいと思います。
ロボコピーってなんだかカワイイ呼び名だね。ロボコピーッ!
今日も張切るロボーッ!
デウス・エクス・マキナァ!!
(・・・なんか今日やけにテンション高いな・・・?)
(・・・昨日午前2時に酔っ払いながら裸足で帰ってきたけど、それと関係あるのかな?)
基本的な構文だけだとフォルダをコピーできないのだ。
ああっ?コピーするコマンドなんだから、robocopy a b 的な感じで打てばいいんだろう?
そう慌てるでない。まあ、いっぺんそれで打ってみ。あ、aの中にサブフォルダとかも入れてみてね。空のほうが良いな。
「a」フォルダに画像のとおりにファイルとフォルダを入れて以下のコマンドを打ってみる。
robocopy a b
いけえ。ラ◯ュタの雷をぉ↑↑
・・・
すると、「foruda」フォルダがコピーされていないことが確認できる。
おい、フォルダが移ってねえじゃねえか! パソコン壊れたか! AmazonでPCのタイムセールやってねえかなあ!?
待て待て。PCをわざわざ買い直すんじゃあない。
これはrobocopyの仕様なのだ。サブフォルダもコピーするためにはオプション値を入れなければならんのだ。これをいっつも忘れるんだよな・・・
僕がいつも使ってるrobocopy文
僕がいつも使うときは、大抵まるっとコピーしたいので、以下の文を使います。
robocopy a b /s /e
すると・・・
おお! フォルダもコピーされてるじゃねえか!
何が起きたんだよ!?
う~ん、絡みづらい・・・。え~と、今入れたオプション値は以下の効果があるのよ。
- S :サブディレクトリをコピーして、空のディレクトリはコピーしない。
- E:空のサブディレクトリもコピーする。
なるほどなあ。SはSub directoryで、EがEmpty directoryですな基本的にはこの書き方で大丈夫そうだなあ。
コピー元から削除したい場合の書き方
このrobocopyなんだが、コピーだけじゃなく移動もできるんだわ。
さっき作った「b」フォルダを「c」としてコピーするね。
くそっ!!今日てんびん座最下位かよ!!
この文を実行すると、以下の画像のようになる。
robocopy b c /s /e /mov
また、この文を実行すると、 以下の画像のようになる。
robocopy b c /s /e /move
「/mov」だとコピー元フォルダの中のファイルが無くなって、 「/move」だとコピー元フォルダごと無くなるんだよね。
なるほどなあ。 「/mov」は家の中のものを盗る泥棒猫で、「/move」は家ごと盗る結婚詐欺師って感じだね。
おお・・・そうだといいな・・・
フォルダ構造だけコピーしたい場合の書き方
ファイルは要らねえ!フォルダだけくれ!っていうケースを紹介します。
「a」フォルダに以下のファイルとフォルダを追加します。
以下の2つのコマンドを比べてみると、/nocopy
を入れたらファイルがコピーされずにフォルダ構造だけコピーされていることが確認できる。
robocopy a b /s /e
robocopy a b /s /e /nocopy
大量のファイルとフォルダをコピーする場合に役立ちそうなオプション
HDDとかSSDに自分が個人レベルで持っているデータをバックアップとかで保存したいときに役立ちそうなオプションを紹介するよ。以下の4つ。
- /j:バッファに蓄積せずにコピー。メモリ使用量を削減。
- /purge:コピー先フォルダが既にある場合に、コピー元フォルダに存在しないコピー先フォルダ内のファイル・フォルダを削除する。
- /minage:yyyymmdd:コピー元フォルダ内の更新日時が指定日時より新しいファイルを除外する。
- /XNで新しいのを除外。/XOで古いのを除外。
へえ・・・ファルシのルシがコクーンでパージするんだね。
そうだね、パルスのファルシのルシがパージでコクーンで・・・って、FF知らない人がぽかーんだね。やめようね。
まず、/jを使って、「b」フォルダを作るよ。
/j:バッファに蓄積せずにコピー。メモリ使用量を削減。
robocopy a b /s /e /j
/purge:コピー元フォルダにないものはコピー先フォルダで削除。
そして、「a」フォルダからtest.txtを消すね。その状態で、/purgeすると、「b」フォルダからtest.txtが無くなるんだわ。
robocopy a b /s /e /j /purge
本当だ! 「test.txt」がない! 私の今月の食費もない!
(何の話をしているんだ・・・?)
/XN:コピー元が新しいとコピーされなくする。
この状態で、次のコマンドを打つと、 古いのだけコピーされる。
robocopy a b /s /e /j /purge /XN
/XO:コピー元が古いとコピーされなくする 。
このコマンドを打つと、新しいのだけコピーする増分バックアップができる。
robocopy a b /s /e /j /purge /XO
あ~、古いのより新しい方が当たりやすいもんね~。
/minage:yyyymmdd:コピー元フォルダ内の更新日時が指定日時より新しいファイルを除外する。
そして、前にバックアップした日付をメモっていれば、/minageでコピー先に古いファイルのままにしたままで、バックアップもできる。
この状態で以下のコマンドを実行すると・・・
robocopy a b /s /e /j /purge /minage:20111026
無い! 確かに、あんなにシフトを入れて手に入れたバイト代が無いよう・・・
・・・?
おしまい
今日はこんなもんか!また一つ、世界の真実を知ってしまったようだ・・・
そういや、今日はなんでテンションがいつもより2段階くらいレベル高いの?彼氏にでも振られたか?
いやー違うんだよ。昨日始めてパチンコに行ったら今月のバイトの給料全額すっちまって、隣の席のおっちゃんに色仕掛けで数万借りたんだけど、それもすっちまってこっそり帰ろうとしたら、おっちゃんとその仲間らしき人たちに囲まれたんだけど、パチンコ行く途中のバスの中で鈴木福似の子供から貰った爆竹を叩きつけてなんとか逃げ切って、その帰りに公園でしょぼくれて泣いてたら、ガタイのいいOLがブラックニッカをおごってくれて、色々とお互いに思いの丈を話したら、吹っ切れました!
今日からも思いっきり頑張ろうと思いました!
そんなバカなあ。
参考になったサイト
このサイトがすごくゴリゴリ網羅されていました。もっと知りたかったらオススメです。
コメント