ホーム > コマンドプロンプト・バッチファイル リファレンス
Windowsのコマンドプロンプトで、ディレクトリ配下のファイルも含めて、コピーする方法を解説します。
通常の copyコマンドでは、ファイルのコピーしか行うことが出来ません。
今回は、xcopyコマンドを使って、ディレクトリのコピーを行いたいと思います。
書式
xcopyの書式になります。
xcopy コピー元ディレクトリ コピー先ディレクトリ オプション
よく使用するオプションになります。
これら以外はコマンドのヘルプで確認してください。
オプション | 内容 |
---|
/p | コピー先のファイルを作成する前に確認メッセージを表示します。 |
/s | 空のディレクトリを除く、ディレクトリとサブディレクトリをコピーします。 |
/e | 空のディレクトリを含む、ディレクトリとサブディレクトリをコピーします。 |
/q | コピー中にファイル名を表示しません。 |
/f | コピー中にコピー元とコピー先のフルパスを表示します。 |
/h | 隠しファイルやシステムファイルもコピーします。 |
/t | ファイルはコピーせず、ディレクトリ構造のみを作成します。 空のディレクトリ、サブディレクトリは対象外になります。 同時に[/e]も指定することで、空ディレクトリ、サブディレクトリも作成されます。 |
/y | 上書き確認のメッセージを表示しません。 |
/? | コマンドのヘルプを表示します。 |
リンク
サンプルと解説
様々なディレクトリ構成、オプションを使用したサンプルとコピー時の動きの解説です。
コピー前後のファイルの白文字が既存ファイル、黄色文字がコピーされたファイルです。
シンプルなコピー
単純にディレクトリをコピーするサンプルです。(サブディレクトリはコピーされません)
コピー元のディレクトリ直下にあるファイルがコピー対象となります。
ファイルかディレクトリの確認では「d」(ディレクトリ)を入力します。
(コピー先のディレクトリ[folder2]が存在する場合は、確認メッセージは表示されません)
コマンド
C:\workspace\cmd>xcopy folder1 folder2
folder2 は受け側のファイル名ですか、
またはディレクトリ名ですか
(F= ファイル、D= ディレクトリ)? d
folder1\file1.txt
1 個のファイルをコピーしました
コピー前のファイル
C:\workspace\cmd\folder1\file1.txt
コピー後のファイル
C:\workspace\cmd\folder1\file1.txt
C:\workspace\cmd\folder2\file1.txt
[folder1]が[folder2]としてコピーされていることが分かります。
リンク
サブディレクトリを含めたコピー(空ディレクトリ含む)
サブディレクトリ(配下のファイルを含む)を含めたコピーのサンプルです。
また、コピー元に空のディレクトリがある場合もコピーされます。
コマンド
C:\workspace\cmd>xcopy folder1 folder2 /e
folder1\file1.txt
folder1\subFolder1\subFile1.txt
2 個のファイルをコピーしました
コピー前のファイル
C:\workspace\cmd\folder1
C:\workspace\cmd\folder1\file1.txt
C:\workspace\cmd\folder1\subFolder1
C:\workspace\cmd\folder1\subFolder1\subFile1.txt
C:\workspace\cmd\folder1\subFolder2
C:\workspace\cmd\folder2
コピー後のファイル
C:\workspace\cmd\folder1
C:\workspace\cmd\folder1\file1.txt
C:\workspace\cmd\folder1\subFolder1
C:\workspace\cmd\folder1\subFolder1\subFile1.txt
C:\workspace\cmd\folder1\subFolder2
C:\workspace\cmd\folder2
C:\workspace\cmd\folder2\file1.txt
C:\workspace\cmd\folder2\subFolder1
C:\workspace\cmd\folder2\subFolder1\subFile1.txt
C:\workspace\cmd\folder1\subFolder2
このサンプルでは、コピー元の[folder1]直下にあるファイルに含めて、サブディレクトリの[subFolder1]、空のサブディレクトリ[subFolder2]もコピーされていることが確認出来ます。
サブディレクトリを含めたコピー(空ディレクトリ除く)
サブディレクトリ(配下のファイルを含む)を含めたコピーのサンプルです。
また、コピー元の空ディレクトリはコピーされません。
コマンド
C:\workspace\cmd>xcopy folder1 folder2 /s
folder1\file1.txt
folder1\subFolder1\subFile1.txt
2 個のファイルをコピーしました
コピー前のファイル
C:\workspace\cmd\folder1
C:\workspace\cmd\folder1\file1.txt
C:\workspace\cmd\folder1\subFolder1
C:\workspace\cmd\folder1\subFolder1\subFile1.txt
C:\workspace\cmd\folder1\subFolder2
C:\workspace\cmd\folder2
コピー後のファイル
C:\workspace\cmd\folder1
C:\workspace\cmd\folder1\file1.txt
C:\workspace\cmd\folder1\subFolder1
C:\workspace\cmd\folder1\subFolder1\subFile1.txt
C:\workspace\cmd\folder1\subFolder2
C:\workspace\cmd\folder2
C:\workspace\cmd\folder2\file1.txt
C:\workspace\cmd\folder2\subFolder1
C:\workspace\cmd\folder2\subFolder1\subFile1.txt
このサンプルでは、コピー元の[folder1]直下にあるファイルに含めて、サブディレクトリの[subFolder1]がコピーされ、空のサブディレクトリ[subFolder2]がコピーされていないことが確認出来ます。
ディレクトリ構造をコピーする(空、サブディレクトリ含む)
ファイルはコピーせずに、コピー元のディレクトリ構造をコピー先に作成するサンプルです。
コマンド
C:\workspace\cmd>xcopy folder1 folder2 /t /e
コピー前のファイル
C:\workspace\cmd\folder1
C:\workspace\cmd\folder1\file1.txt
C:\workspace\cmd\folder1\subFolder1
C:\workspace\cmd\folder1\subFolder1\subFile1.txt
C:\workspace\cmd\folder1\subFolder2
C:\workspace\cmd\folder2
コピー後のファイル
C:\workspace\cmd\folder1
C:\workspace\cmd\folder1\file1.txt
C:\workspace\cmd\folder1\subFolder1
C:\workspace\cmd\folder1\subFolder1\subFile1.txt
C:\workspace\cmd\folder1\subFolder2
C:\workspace\cmd\folder2
C:\workspace\cmd\folder2\subFolder1
C:\workspace\cmd\folder2\subFolder2
このサンプルでは、コピー元の[folder1]のファイルが含まれているサブディレクトリ[subFolder1]と、空のサブディレクトリ[subFolder2]がコピーされていることが確認出来ます。
バッチ処理(自動処理)などに使えるコピー
バッチ処理や自動処理を行う場合、処理中に対話を含めると処理が止まってしまいます。
なので、対話を行わないようにコピーするサンプルになります。
コピー時のオプションは下記になります。
・コピー元の空ディレクトリ、サブディレクトリを含む、ファイル全てをコピー
・コピー先のディレクトリが存在しない場合は作成する
・上書き時に確認メッセージを表示しない
・コピーしたファイルのフルパス情報をログ(xcopy.log)に出力
コマンド
C:\workspace\cmd>echo d | xcopy folder1 folder2 /e /f /y > .\xcopy.log
コピー前のファイル
C:\workspace\cmd\folder1
C:\workspace\cmd\folder1\file1.txt
C:\workspace\cmd\folder1\subFolder1
C:\workspace\cmd\folder1\subFolder1\subFile1.txt
C:\workspace\cmd\folder1\subFolder2
C:\workspace\cmd\folder2
コピー後のファイル
C:\workspace\cmd\folder1
C:\workspace\cmd\folder1\file1.txt
C:\workspace\cmd\folder1\subFolder1
C:\workspace\cmd\folder1\subFolder1\subFile1.txt
C:\workspace\cmd\folder1\subFolder2
C:\workspace\cmd\folder2
C:\workspace\cmd\folder2\file1.txt
C:\workspace\cmd\folder2\subFolder1
C:\workspace\cmd\folder2\subFolder1\subFile1.txt
C:\workspace\cmd\folder2\subFolder2
記事は以上です。Windowsのコマンドプロンプトでディレクトリをコピーする際、xcopyは必須になると思います。また、バッチファイル(.bat)に組み込む際もよく使うコマンドだと思いますので、しっかりマスターしておきましょう。
リンク
関連記事
ファイルのコピー
コメント