XCOPYでフォルダの除外ができない!
XCOPYしたときにコピーしたくないフォルダを除外しようとしたのですが、
エラーメッセージが出たり、
やり方が面倒だったので、
robocopyを使った方が良いよ。
という話です。
やりたかったこと
やりたかったのは、バックアップしたいフォルダと同列にbackupフォルダを作り、XCOPYコマンドを実行すると、backupフォルダへ退避させる
ということがしたかったです。
なので、コピー元のbackupフォルダは除外しなければならなのですが・・・
XCOPYだとこれができませんでした。。
backupフォルダを除外しても
『サイクリックコピーは実行できません。』
エラーがでました。
サイクリックコピーは実行できません。
のエラーについては別記事で紹介しています。
robocopyのフォルダ除外の方法
Robocopyでのフォルダ除外の方法を照会します。
フォルダ除外には/xdオプションを使います。
例えば、
- コピー元:D:\勤務表
- コピー先:D:\勤務表\backup
として、コピー元配下の(backupファイルを除く)すべてのファイルとサブフォルダをコピー先にコピーします。
よって、これを実現したい場合は、以下のコマンドになります。
Robocopy D:\勤務表 D:\勤務表\backup /S /xd backup
コマンド補足
/Sは
コピー元フォルダのサブフォルダ、ファイルをすべてコピーする
というオプションです。
かつ、先ほど紹介した/xdオプションでバックアップフォルダを除外しています。
XCOPYの使いどころ?
robocopyを知ってしまえば、不要なのかもしれません。
XCOPYとRobocopyを比較した記事もあります。
XCOPYよりRobocopyの方が新しい技術ですし、用途も似ているので
Robocopy圧勝に見えます。。。
エンジニア中級者への道
XCOPYよりRobocopyの方が新しい技術です。
日々、技術が進化していき、
昔は便利だったコマンドも、新しいコマンドに代わっていきます。
そのためにはコマンドに限らず
仕様を一瞬で把握する能力
が大事だと思いました。
では
コマンドの仕様を把握するためにはどうすればよいか?
それは、そのまま仕様を暗記するのではなく、
その機能(コマンド)を使用する目的を明確にする
ということだと思います。
今回の例で言えば、
- コピーがしたいのか?
- バックアップがとりたいのか?
- フォルダを除外する必要はあるのか?
- そもそもバックアップとる必要あるのか?
などということをもう一回立ち止まって考えることだと思います。
そうすると、仕様を把握しやすくなると思います。
また、
なんてこともあるかもしれません。
エンジニアの現場でもこのような人はかなり重宝されますし、上流のエンジニアとして単価が高い印象があります。