ファイルとディレクトリ構造のコピー(XCOPY)

XCOPY コマンドを使用するとファイルとディレクトリ構造のコピーなど高機能なコピー機能が利用できます。ここではコマンドプロンプトにおける XCOPY コマンドの使い方について解説します。

(Last modified: )

XCOPYコマンドの使い方

XCOPY コマンドは COPY 機能と似ていますが、より高機能なコピー機能を利用することができます。書式は次の通りです。

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] [/J]
[/EXCLUDE:ファイル1[+ファイル2][+ファイル3]...]

多くのオプションが用意されていますが、この中から知っておくと便利だと思われる使い方について解説していきます。

ファイルをコピーする

COPY コマンドと同じようにファイルをコピーする場合にも XCOPY コマンドは利用できます。例えばカレントディレクトリにある memo.txt を同じディレクトリ内の memo_back.txt としてコピーするには次のように実行します。

xcopy memo.txt memo_back.txt

XCOPYコマンドを実行すると「memo_back.txt は受け側のファイル名ですか、またはディレクトリ名ですか (F= ファイル、D= ディレクトリ)?」と表示されます。

ファイルをコピーする(1)

今回はファイルなので[f]キーを押すとファイルのコピーが完了します。

ファイルをコピーする(2)

DIR コマンドを使って確認してみると、コピーされた memo_back.txt が作成されていることが確認できます。

ファイルをコピーする(3)

-- --

送り先として存在するディレクトリ名をを指定すると、同じファイル名でコピーが行われます。例えばカレントディレクトリにある memo.txt をカレントディレクトリ内の既に存在している document ディレクトリに同じ名前でコピーするには次のように実行します。

xcopy memo.txt document

document ディレクトリに同じファイル名でコピーがされました。

ファイルをコピーする(4)

TREE コマンドを使って確認してみると、doc ディレクトリが作成されて、ディレクトリの中に コピー元と同じファイル名で memo.txt が作成されていることが確認できます。

ファイルをコピーする(5)

-- --

送り先として存在しないディレクトリ名をを指定すると、ディレクトリを新規に作成した上で同じファイル名でコピーが行われます。例えばカレントディレクトリにある memo.txt をカレントディレクトリ内の存在していない doc ディレクトリに同じ名前でコピーするには次のように実行します。

xcopy memo.txt doc

XCOPYコマンドを実行すると「doc は受け側のファイル名ですか、またはディレクトリ名ですか (F= ファイル、D= ディレクトリ)?」と表示されます。

ファイルをコピーする(6)

今回はディレクトリなので[d]キーを押すと新しいディレクトリが作成されてファイルのコピーが完了します。

ファイルをコピーする(7)

TREE コマンドを使って確認してみると、doc ディレクトリが作成されて、ディレクトリの中に コピー元と同じファイル名で memo.txt が作成されていることが確認できます。

ファイルをコピーする(8)

ディレクトリ構造をコピーする

XCOPY コマンドでは、「/E」オプションを付けることで、指定したディレクトリに含まれるファイルやサブディレクトリなどをまとめて別のディレクトリにコピーすることができます。例えば c:\test\document ディレクトリに含まれるファイルやサブディレクトリをまとめて d:\test\doc ディレクトリにコピーする場合は次のように実行します。

xcopy /e c:\test\document d:\test\doc

XCOPYコマンドを実行すると「D:test\doc は受け側のファイル名ですか、またはディレクトリ名ですか (F= ファイル、D= ディレクトリ)?」と表示されます。

ディレクトリ構造をコピーする(1)

今回はディレクトリなので[d]キーを押すと新しいディレクトリが作成されてファイルとディレクトリのコピーが完了します。

ディレクトリ構造をコピーする(2)

TREE コマンドを使って確認してみると、コピー元のディレクトリとファイルは次のようになっていました。

ディレクトリ構造をコピーする(3)

XCOPY コマンド実行後に、コピー先のディレクトリを TREE コマンドを使って確認してみると、コピー元のディレクトリとファイルはすべてコピーされていることが確認できます。

ディレクトリ構造をコピーする(4)

空のディレクトリを除いてディレクトリ構造をコピーする

XCOPY コマンドでは、「/S」オプションを付けることで、指定したディレクトリに含まれるファイルやサブディレクトリなど空のディレクトリは除いてまとめて別のディレクトリにコピーすることができます。例えば c:\test\document ディレクトリに含まれるファイルやサブディレクトリを空のディレクトリは除いてまとめて d:\test\doc ディレクトリにコピーする場合は次のように実行します。

xcopy /s c:\test\document d:\test\doc

XCOPYコマンドを実行すると「D:test\doc は受け側のファイル名ですか、またはディレクトリ名ですか (F= ファイル、D= ディレクトリ)?」と表示されます。

空のディレクトリを除いてディレクトリ構造をコピーする(1)

今回はディレクトリなので[d]キーを押すと新しいディレクトリが作成されてファイルとディレクトリのコピーが完了します。この時空のディレクトリはコピーされません。

空のディレクトリを除いてディレクトリ構造をコピーする(2)

TREE コマンドを使って確認してみると、コピー元のディレクトリとファイルは次のようになっていました。

空のディレクトリを除いてディレクトリ構造をコピーする(3)

XCOPY コマンド実行後に、コピー先のディレクトリを TREE コマンドを使って確認してみると、コピー元のディレクトリとファイルは空のディレクトリは除いてすべてコピーされていることが確認できます。

空のディレクトリを除いてディレクトリ構造をコピーする(4)

ディレクトリ構造だけをコピーする

XCOPY コマンドでは、「/T」オプションを付けることで、指定したディレクトリにサブディレクトリなどディレクトリ構造だけを別のディレクトリにコピーすることができます。例えば c:\test\document ディレクトリに含まれるサブディレクトリの構造だけを d:\test\doc ディレクトリにコピーする場合は次のように実行します。

xcopy /t c:\test\document d:\test\doc

XCOPYコマンドを実行すると「D:test\doc は受け側のファイル名ですか、またはディレクトリ名ですか (F= ファイル、D= ディレクトリ)?」と表示されます。

空のディレクトリを除いてディレクトリ構造をコピーする(1)

今回はディレクトリなので[d]キーを押すと新しいディレクトリが作成されてディレクトリ構造だけがのコピーされます。この時空のディレクトリはコピーされません。

空のディレクトリを除いてディレクトリ構造をコピーする(2)

TREE コマンドを使って確認してみると、コピー元のディレクトリとファイルは次のようになっていました。

空のディレクトリを除いてディレクトリ構造をコピーする(3)

XCOPY コマンド実行後に、コピー先のディレクトリを TREE コマンドを使って確認してみると、コピー元のディレクトリ構造だけがコピーされていることが確認できます。

空のディレクトリを除いてディレクトリ構造をコピーする(4)

なお空のディレクトリも含めてディレクトリ構造だけをコピーしたい場合には、「/T」オプションに加えて「/E」オプションも付けてください。

xcopy /t /e c:\test\document d:\test\doc

指定した日付以降に作成または更新されたファイルだけをコピーする

XCOPY コマンドでは、「/D:月-日-年」オプションを付けることで、指定した日付以降に作成または更新されたファイルだけをコピーすることができます。例えば c:\test& ディレクトリに含まれるファイルの中で 2019-01-01 以降に作成または更新されたものだけを d:\test ディレクトリにコピーする場合は次のように実行します。

xcopy /d:1-1-2019 c:\test d:\test

コピー前にカレントディレクトリに含まれるファイルの作成日または更新時を確認すると 2019-01-01 以降に作成または更新されたファイルは2つでした。

指定した日付以降に作成または更新されたファイルだけをコピーする(1)

XCOPY コマンドを実行すると、先ほどの条件に一致していた2つのファイルだけがコピーされました。

指定した日付以降に作成または更新されたファイルだけをコピーする(2)

指定した文字列が含まれるファイルを除外してコピーする

XCOPY コマンドでは、「/EXCLUDE:ファイル1[+ファイル2]...」オプションを付けることで、指定した文字列が含まれるファイルを除外してコピーすることができます。例えば c:\test\document ディレクトリに含まれるファイルやサブディレクトリの中で .bak がファイル名に含まれるファイルは除外したものを d:\test\doc ディレクトリにコピーする場合は次のように実行します。

xcopy /e /exclude:c:\test\excludelist.txt c:\test\document d:\test\doc

「/EXCLUDE:ファイル1[+ファイル2]...」オプションの引数にはファイルを指定します。ファイルには除外したい文字列を1行につき1つ指定して記述してください。今回は c:\test\excludelist.txt を作成し次のように記述しました。

指定した文字列が含まれるファイルを除外してコピーする(1)

XCOPY コマンドを実行すると次のように3つのファイルがコピーされました。

指定した文字列が含まれるファイルを除外してコピーする(2)

TREE コマンドを使って確認してみると、コピー元のディレクトリとファイルは次のようになっていました。

指定した文字列が含まれるファイルを除外してコピーする(3)

XCOPY コマンド実行後に、コピー先のディレクトリを TREE コマンドを使って確認してみると、.bak がファイル名に含まれるファイルを除いて3つのファイルがコピーされていることが確認できます。

指定した文字列が含まれるファイルを除外してコピーする(4)

-- --

XCOPY コマンドを使ってファイルとディレクトリ構造のコピーを行う方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。