#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)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS