#navi(../)
* ディレクトリ配下のファイルを全てコピーする・xcopyコマンド [#l7558e5b]
コマンドプロンプト上でxcopyコマンドを使用することにより、指定したディレクトリ配下のファイルを全てコピーすることができます。~
以下にxcopyの使用例をいくつか紹介します。
#contents
#htmlinsertpcsp(win-top.html,win-sp.html)
* 関連記事 [#n244a657]
-[[ディレクトリをツリー構造で表示する・tree>コマンドプロンプト/ディレクトリをツリー構造で表示する・tree]]
-[[フォルダー単位で簡単にバックアップできるrobocopy>コマンドプロンプト/フォルダー単位で簡単にバックアップできるrobocopy]]
* 使用した環境 [#h318cdb4]
コピー元フォルダ(ファイル)はsrcディレクトリ配下とします。~
以下、src配下の状態をtreeコマンドで出力した結果です。
C:\Users\sakura>tree /f src
フォルダー パスの一覧
ボリューム シリアル番号は 1234-5678 です
C:\USERS\SAKURA\SRC
│ README.txt
│
├─Android
│ Icecream_Sandwich.txt
│ Jelly_Bean.txt
│
├─BSD
│ FreeBSD.txt
│ NetBSD.txt
│ OpenBSD.txt
│
├─iOS
│ iOS5.txt
│ iOS6.txt
│
├─Linux
│ CentOS.txt
│ Debian.txt
│ Ubuntu.txt
│
├─MacOS
│ │ MacOS8.txt
│ │ MacOS9.txt
│ │
│ └─OSX
│ Lion.txt
│ Mountain_Lion.txt
│
├─Other
└─Windows
Windows7.txt
Windows8.txt
WindowsVista.txt
* 指定したディレクトリ配下を指定したディレクトリにコピーする [#k08dfbad]
以下のオプションを使用することにより、ディレクトリ配下のファイルを全てコピーすることができます。
xcopy /e コピー元ディレクトリ コピー先ディレクトリ
コピー元ディレクトリ src をコピー先ディレクトリ dest1 にコピーしてみます。~
C:\Users\sakura>xcopy /e src dest1
dest1 は受け側のファイル名ですか、
またはディレクトリ名ですか
(F= ファイル、D= ディレクトリ)? d
src\README.txt
src\Android\Icecream_Sandwich.txt
src\Android\Jelly_Bean.txt
src\BSD\FreeBSD.txt
src\BSD\NetBSD.txt
src\BSD\OpenBSD.txt
src\iOS\iOS5.txt
src\iOS\iOS6.txt
src\Linux\CentOS.txt
src\Linux\Debian.txt
src\Linux\Ubuntu.txt
src\MacOS\MacOS8.txt
src\MacOS\MacOS9.txt
src\MacOS\OSX\Lion.txt
src\MacOS\OSX\Mountain_Lion.txt
src\Windows\Windows7.txt
src\Windows\Windows8.txt
src\Windows\WindowsVista.txt
18 個のファイルをコピーしました
コピー先ディレクトリ dest1 が存在しないため、問い合わせされます。~
''d''を押して進みました。
treeコマンドでコピー状態を確認してみると、コピー元と同じ状態になっていることが確認できます。
C:\Users\sakura>tree /f dest1
フォルダー パスの一覧
ボリューム シリアル番号は 1234-5678 です
C:\USERS\SAKURA\DEST1
│ README.txt
│
├─Android
│ Icecream_Sandwich.txt
│ Jelly_Bean.txt
│
├─BSD
│ FreeBSD.txt
│ NetBSD.txt
│ OpenBSD.txt
│
├─iOS
│ iOS5.txt
│ iOS6.txt
│
├─Linux
│ CentOS.txt
│ Debian.txt
│ Ubuntu.txt
│
├─MacOS
│ │ MacOS8.txt
│ │ MacOS9.txt
│ │
│ └─OSX
│ Lion.txt
│ Mountain_Lion.txt
│
├─Other
└─Windows
Windows7.txt
Windows8.txt
WindowsVista.txt
* 空のディレクトリをのぞく [#w43383b6]
ディレクトリ内にまったくファイルが存在しない場合は、そのディレクトリを作成しないオプションがあります。
xcopy /s コピー元ディレクトリ コピー先ディレクトリ
コピー元ディレクトリ src をコピー先ディレクトリ dest2 にコピーしてみます。~
コピー先ディレクトリ dest2 が存在しないため、問い合わせされます。~
''d''を押して進みました。
C:\Users\sakura>xcopy /s src dest2
dest2 は受け側のファイル名ですか、
またはディレクトリ名ですか
(F= ファイル、D= ディレクトリ)? d
src\README.txt
src\Android\Icecream_Sandwich.txt
src\Android\Jelly_Bean.txt
src\BSD\FreeBSD.txt
src\BSD\NetBSD.txt
src\BSD\OpenBSD.txt
src\iOS\iOS5.txt
src\iOS\iOS6.txt
src\Linux\CentOS.txt
src\Linux\Debian.txt
src\Linux\Ubuntu.txt
src\MacOS\MacOS8.txt
src\MacOS\MacOS9.txt
src\MacOS\OSX\Lion.txt
src\MacOS\OSX\Mountain_Lion.txt
src\Windows\Windows7.txt
src\Windows\Windows8.txt
src\Windows\WindowsVista.txt
18 個のファイルをコピーしました
treeコマンドでコピー状態を確認してみると、コピー元のOtherディレクトリを除いた状態になっていることが確認できます。
C:\Users\sakura>tree /f dest2
フォルダー パスの一覧
ボリューム シリアル番号は 1234-5678 です
C:\USERS\SAKURA\DEST2
│ README.txt
│
├─Android
│ Icecream_Sandwich.txt
│ Jelly_Bean.txt
│
├─BSD
│ FreeBSD.txt
│ NetBSD.txt
│ OpenBSD.txt
│
├─iOS
│ iOS5.txt
│ iOS6.txt
│
├─Linux
│ CentOS.txt
│ Debian.txt
│ Ubuntu.txt
│
├─MacOS
│ │ MacOS8.txt
│ │ MacOS9.txt
│ │
│ └─OSX
│ Lion.txt
│ Mountain_Lion.txt
│
└─Windows
Windows7.txt
Windows8.txt
WindowsVista.txt
* xcopyの各種オプション [#tf5a8725]
以下、コマンドプロンプト上で/?オプションを使用し出力された結果です。~
xcopyにはたくさんのオプションがあるので、状況に応じてオプションを追加してみてください。
C:\Users\sakura>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 の内容を変更する際にも使用できます。
/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 を使ってコピーします。サイズが大きい
ファイルに適しています。
スイッチ /Y は環境変数 COPYCMD に前もって設定しておくことができます。
この設定は、コマンド ラインの /-Y で上書きすることができます。
#htmlinsertpcsp(win-btm.html,win-sp.html)