xcopy

ディレクトリ ツリーごとコピーできます。

構文

XCOPY コピー元 [コピー先] [/A | /M] [/D[:日付]] [/P] [/S [/E]] [/V] [/W]
                      [/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U]
                      [/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z] [/B]
                      [/EXCLUDE:ファイル1[+ファイル2][+ファイル3]...]

オプション

オプション 機能
コピー元 コピーするファイル (複数可) を指定する。
コピー先 新しいファイルの場所や名前を指定する。
/A アーカイブ属性が設定されているファイルのみをコピーし、属性は変更しない。
/M アーカイブ属性が設定されているファイルのみをコピーし、アーカイブ属性を解除する。
/D:月-日-年 指定された日付以降に変更されたファイルをコピーする。日付が指定されなかったときは、コピー元の日付がコピー先の日付より新しいファイルだけをコピーする。
/EXCLUDE:ファイル1[+ファイル2][+ファイル3]... コピーの除外対象を特定するための文字列を記述したファイルを指定する (複数指定可)。文字列は、1行に1つずつ記述する。その文字列が、コピー対象ファイルの絶対パスの一部と一致した場合、そのファイルはコピーから除外される。たとえば、"\obj\"という文字列を指定するとディレクトリobjの下の全ファイルが除外される。".obj"という文字列を指定すると.objという拡張子のファイルがすべて除外される。
/P コピー先のファイルを作成する前に確認のメッセージを表示する。
/S 空の場合を除いて、ディレクトリとサブディレクトリをコピーする。
/E ディレクトリまたはサブディレクトリが空であってもコピーする。"/S /E"と同じ意味。/Tの内容を変更する際にも使用できる。

これを指定しない場合、空のディレクトリはコピーされない

これまたは/Sオプションを指定しない場合、サブディレクトリはコピーされない

/V コピー先の各ファイルのサイズを検証する。
/W コピーを開始する際に、任意のキーを押すことを求めるメッセージを表示する。
/C エラーが発生してもコピーを続ける。
/I 指定されたコピー先が存在せず、コピーするファイルが複数の場合、コピー先をディレクトリとしてコピーする。
/Q コピー中にファイル名を表示しない。
/F コピー中にコピー元とコピー先の全ファイル名を表示する。
/L コピーされるファイル名を表示する。
/G 暗号化をサポートしないコピー先に、暗号化されたファイルをコピーすることを許可する。
/H 隠しファイルやシステム ファイルもコピーする。

これを指定しない場合、隠しファイルやシステム ファイルはコピーされない

/R 読み取り専用ファイルを上書きする。
/T ファイルはコピーせずにディレクトリ構造のみを作成する。空のディレクトリまたはサブディレクトリは除く。"/T /E"と指定すると空のディレクトリやサブディレクトリも作成される。
/U コピー先に既に存在するファイルだけをコピーする。
/K 属性をコピーする。指定しない場合、読み取り専用属性はリセットされる。
/N 生成された短い名前を使用してコピーする。
/O ファイルの所有権とACL情報をコピーする。
/X ファイルの監査設定をコピーする (/Oを含む)。
/Y 既存のファイルを上書きする前に確認のメッセージを表示しない。
/-Y 既存のファイルを上書きする前に確認のメッセージを表示する。
/Z 再起動可能モードでネットワーク ファイルをコピーする。
/B シンボリック リンクのリンク先ではなく、シンボリック リンク自体をコピーする。

管理権限を持たないユーザーが実行すると、「ファイル作成エラー - クライアントは要求された特権を保有していません。」として失敗する

/J バッファされていないI/Oを使ってコピーする。サイズが大きいファイルに適している。

終了コード

Exit code Description  
0 Files were copied without error.  
1 No files were found to copy.  
2 The user pressed CTRL+C to terminate xcopy.  
4 Initialization error occurred.

There is not enough memory or disk space, or you entered an invalid drive name or invalid syntax on the command line.

 
5 Disk write error occurred.  
Remarks - Xcopy | Microsoft Learn

利用例

ディレクトリ内の拡張子が.txtのすべてのファイルを、ディレクトリDESTへコピーする。

xcopy *.txt DEST\

このときディレクトリが存在しない場合は、確認なく作成されます。

コピー先にすでに同名のファイルが存在する場合には、上書きの確認メッセージが表示されます。これは/Yオプションを追加することで無効にできます。

xcopy *.txt DEST\ /Y

ディレクトリ内のすべてのファイルのコピー

ディレクトリSRC内のファイルを、ディレクトリDESTにコピーする場合を考えます。

xcopy SRC DEST\

このときディレクトリDESTの末尾にパスの区切り文字 (\) を入れないと、それがディレクトリ名と解釈されず、

DEST は受け側のファイル名ですか、
またはディレクトリ名ですか
(F= ファイル、D= ディレクトリ)?

のように問われることになります。また既定では、

  • 空のディレクトリ
  • サブディレクトリ
  • 隠しファイル
  • システム ファイル

はコピーされないため、これらもコピーするには

xcopy SRC DEST\ /E /H

のようにオプションを指定します。

追加する要素 オプション
サブディレクトリも /E
隠しファイルやシステム ファイルも /E /H
属性も /E /H /K
上書きの確認やエラーで中断しない /E /H /K /Y /C