Programming Field

ファイルをコピーするコマンドは? - DOS/コマンドプロンプト コマンド一覧

ファイルをコピーするコマンドには、CopyXcopyRobocopyの3種類があります。それぞれ役割が異なるため、状況に応じて使い分けます。

Copyコマンド

Copyコマンドはもっとも単純なコピーコマンドであり、主に1つのファイルをコピーする際に用います。例えば以下のように実行します。

copy hoge.txt D:\Docs\

このコマンドを実行すると、現在のディレクトリにある「hoge.txt」がディレクトリ「D:\Docs」の中にコピーされます。

Copyコマンドではワイルドカードを用いることができます。ワイルドカードを用いると、特定のパターンに一致する複数のファイルを一度にコピーすることができます。

copy *.log D:\Backup\

このコマンドを実行すると、現在のディレクトリにある拡張子が「.log」のファイルすべてを「D:\Backup」の中にコピーします。

なお、既にファイルが存在する場合は上書きするかどうかのプロンプトが表示されます。常に強制的に上書きする場合は「/Y」オプションを指定します。

※ Copyコマンド特有の機能として、「+」を使うとファイルを結合してコピーすることができます。詳しくはCopyコマンドのページを参照してください。

Xcopyコマンド

XcopyコマンドはCopyコマンドを拡張したようなコマンドであり、ディレクトリ丸ごとコピーする機能などがあります(「Xcopy」の「X」は「eXtended」を指すと思われます)。例えば、

xcopy /S /E /Q /Y C:\foo D:\Backup\

というコマンドを実行すると、「C:\foo」がディレクトリである場合、「C:\foo」の中身がディレクトリ含めて丸ごと「D:\Backup」の中にコピーされます。

Xcopyコマンドの注意点として、コピー先の名前の末尾に「\」が付いておらず、コピー先の名前に一致するファイル/ディレクトリが存在しない場合、「<名前> は受け側のファイル名ですか、ディレクトリ名ですか(F=ファイル、D=ディレクトリ)?」というプロンプトが表示されます。これを回避するには、コピー先がディレクトリであれば末尾に「\」を付けるようにします。詳しくはXcopyコマンドページの解説「ファイル名かディレクトリ名かを問う出力」をご覧ください。

なお、Xcopyコマンドでも単体のファイルをコピーすることができますが、Xcopyで指定可能ないくつかのオプション(/K や /O、/SPARSE など)を使わないのであればCopyコマンドの方が楽です。

Robocopyコマンド

RobocopyコマンドはWindows Vista以降で使える強力なコピーツールです。オプションを駆使して複雑な条件のもとファイルコピーを行いたい場合に用います。XcopyはCopyの拡張版ととらえることができますが、Robocopyはそれとは一線を画したコマンドであり、指定するオプションも異なるものが多くあります。

robocopy C:\foo D:\Backup *.log /MIR

上記のコマンドは、「C:\foo」にあるファイル「*.log」をディレクトリ構造そのままに「D:\Backup」にコピーし、「D:\Backup」にのみ存在するファイルを削除する、という処理を行います。

Robocopyはオプションが豊富な分複雑ですが、「/L」オプションで(実際にはコピーせずに)コピーされるファイルの確認を行うことができるほか、「/JOB」オプションを使うことで事前にファイルに記述したオプションを読み込ませることができます。

「よくある質問」へ戻る