はじめに
何階層にもなっている大きめのフォルダ構成を丸ごとコピーして複数個所にペーストしたい場合を考えます。
エクスプローラ上でフォルダのコピペをすると、すべてのペースト処理が一度に並列に走ります。
複製元のサイズが小さければ気になりませんが、完了するまでに時間がかかる場合は、
一つのペースト処理が完了したら次のペーストを実行するようにしたいと思うことがあります。
しかしそれをエクスプローラ上でやるには、処理が完了したことを確認してCtrl+V というのを
人の手で繰り返し行わなければならないため面倒です。
そこでCUIコマンドを使って順次にペーストすることを自動化したいと思います。
環境
- OS Windows 10
本題
ファイルとディレクトリツリーをコピーする場合はcopy コマンドではなく、xcopy コマンドを使います。
しかしこのxcopy コマンドはオプションなしでは、エクスプローラにおけるコピペのような挙動にはなりません。
$ xcopy in out out は受け側のファイル名ですか、 またはディレクトリ名ですか (F= ファイル、D= ディレクトリ)?
上記のように、確認のために処理が止まってしまいます。
この後Dキーを押せば、out フォルダが作成されますが、1階層下のファイルのコピーしかされません。
また、隠しファイルはコピーされず、読み取り専用属性のファイルはコピー先では属性が解除されてしまいます。
エクスプローラのコピペでは、これらのファイルは属性が保持されてコピーされます。
これらの問題を解決するために、以下のコマンドにすると良いかと思います。
$ xcopy in out /iehkq 19 個のファイルをコピーしました
最後の/q オプションはコピーしたファイル名を表示しないためのオプションなので、あってもなくても構いません。
ファイルの所有権やACL(アクセスコントロールリスト)情報をコピーする場合は、
/o や/x オプションが必要になるかと思いますが、今回私が遭遇したケースでは無くて事足りました。
たいていのケースでは、xcopy in out /ie
で十分かもしれません。
参考
xcopyコマンドの説明は以下のコマンドで確認できます。
$ xcopy /?
オンライン上ではMicrosoft のドキュメントがあります。 docs.microsoft.com