このエントリーをはてなブックマークに追加


ディレクトリ配下のファイルを全てコピーする・xcopyコマンド

コマンドプロンプト上でxcopyコマンドを使用することにより、指定したディレクトリ配下のファイルを全てコピーすることができます。
以下にxcopyの使用例をいくつか紹介します。


関連記事

使用した環境

コピー元フォルダ(ファイル)は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

指定したディレクトリ配下を指定したディレクトリにコピーする

以下のオプションを使用することにより、ディレクトリ配下のファイルを全てコピーすることができます。

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

空のディレクトリをのぞく

ディレクトリ内にまったくファイルが存在しない場合は、そのディレクトリを作成しないオプションがあります。

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の各種オプション

以下、コマンドプロンプト上で/?オプションを使用し出力された結果です。
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 で上書きすることができます。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-20 (金) 22:49:31