xcopy

ファイルとディレクトリ (サブディレクトリを含む) をコピーします。

このコマンドを使用する方法の例については、を参照してください。

構文

Xcopy <Source> [<Destination>] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d [:MM-DD-YYYY]] [/u] [/i] [/s [/e]] [/t] [/k] [/r] [/h] [{/a | /m}] [/n] [/o] [/x] [/exclude:FileName1[+[FileName2]][+[FileName3]]] [{/y | /-y}] [/z] [/b] [/j] [/compress]

パラメーター

パラメーター 説明
<ソース> 必須。 コピーするファイルの場所と名前を指定します。 このパラメーターには、ドライブまたはパスを含める必要があります。
[<宛先>] コピーするファイルの宛先を指定します。 このパラメーターには、ドライブ文字とコロン (:)、ディレクトリ名、ファイル名、またはこれらの組み合わせを含めることができます。
/w ファイルのコピーを開始する前に次のメッセージを表示し、ユーザーからの応答を待ちます。
Press any key to begin copying file(s) (ファイルのコピーを開始するには、任意のキーを押してください)
/p 各宛先ファイルを作成するかどうかを確認するメッセージが表示されます。
/c エラーを無視します。
/v 宛先ファイルに書き込むたびに、宛先ファイルがソース ファイルと同一であることを確認します。
/q xcopy メッセージの表示を抑制します。
/f コピー中にソース ファイルと宛先ファイルの名前を表示します。
/l コピーされるファイルのリストを生成しますが、実際にファイルはコピーしません。
/g 宛先が暗号化をサポートしていない場合に、暗号化が解除された <宛先> ファイルを作成します。
/d [:MM-DD-YYYY] 指定した日付以降に変更されたソース ファイルのみをコピーします。 MM-DD-YYYY 値を指定しない場合、xcopy は、既存の <宛先> ファイルよりも新しいすべての <ソース> ファイルをコピーします。 このコマンドライン オプションを使用すると、変更されたファイルを更新できます。
/U "宛先" に存在するファイルのみを "ソース" からコピーします。
/i <ソース> がディレクトリである場合、または <ソース> にワイルドカードが含まれていて、<宛先> が存在しない場合、xcopy<宛先> がディレクトリ名を指定していると見なし、新しいディレクトリを作成します。 次に、xcopy は、指定されたすべてのファイルを新しいディレクトリにコピーします。 既定では、xcopy は、"宛先" がファイルとディレクトリのどちらであるかを指定するように要求します。
/s 空の場合を除き、ディレクトリとサブディレクトリをコピーします。 /s を省略した場合、xcopy は単一のディレクトリ内で機能します。
/e 空の場合でも、すべてのサブディレクトリをコピーします。 /e は、/s および /t コマンドライン オプションと共に使用します。
/t サブディレクトリ構造 (つまり、ツリー) のみをコピーし、ファイルはコピーしません。 空のディレクトリをコピーするには、/e コマンドライン オプションを含める必要があります。
/k ファイルをコピーし、"ソース" ファイルに読み取り専用属性があれば "宛先" ファイルでもその属性を保持します。 既定では、xcopy は読み取り専用属性を削除します。
/r 読み取り専用ファイルをコピーします。
/h 隠しファイル属性とシステム ファイル属性を持つファイルをコピーします。 既定では、xcopy は、隠しファイルまたはシステム ファイルをコピーしません
/a アーカイブ ファイル属性が設定されている "ソース" ファイルのみをコピーします。 /a では、ソース ファイルのアーカイブ ファイル属性は変更されません。 attrib を使用してアーカイブ ファイル属性を設定する方法については、「関連リンク」を参照してください。
/m アーカイブ ファイル属性が設定されている "ソース" ファイルをコピーします。 /a とは異なり、/m では、ソースで指定されたファイルのアーカイブ ファイル属性がオフになります。 attrib を使用してアーカイブ ファイル属性を設定する方法については、「関連リンク」を参照してください。
/n NTFS の短いファイル名またはディレクトリ名を使用してコピーを作成します。 /n は、ファイルまたはディレクトリを NTFS ボリュームから FAT ボリュームにコピーする場合、または FAT ファイル システムの名前付け規則 (つまり、8.3 文字) が "宛先" ファイル システムで必要な場合に必要です。 <宛先> ファイル システムでは、FAT または NTFS を使用できます。
/o ファイルの所有権と随意アクセス制御リスト (DACL) 情報をコピーします。
/x ファイルの監査設定とシステム アクセス制御リスト (SACL) 情報をコピーします (暗に /o を意味します)。
/exclude:FileName1[+[FileName2]][+[FileName3]( )] ファイルのリストを指定します。 少なくとも 1 つのファイルを指定する必要があります。 各ファイルには検索文字列が含まれ、各文字列はファイル内の個別の行になっています。 いずれかの文字列が、コピーされるファイルの絶対パスのいずれかの部分に一致する場合、そのファイルはコピーから除外されます。 たとえば、文字列 obj を指定した場合、ディレクトリ obj の下にあるすべてのファイル、または拡張子が .obj のすべてのファイルが除外されます。
/y 既存の宛先ファイルを上書きするかどうかを確認するプロンプトを抑制します。
/-y 既存の宛先ファイルを上書きするかどうかを確認するプロンプトを表示します。
/z 再起動可能モードでネットワーク経由でコピーします。
/b ファイルの代わりにシンボリック リンクをコピーします。 このパラメーターは Windows Vista® で導入されました。
/j バッファリングせずにファイルをコピーします。 非常に大きなファイルに推奨されます。 このパラメーターは、Windows Server 2008 R2 で追加されました。
/compress ファイル転送中のネットワーク圧縮を要求します (適用可能な場合)。
/? コマンド プロンプトにヘルプを表示します。
/sparse コピー中にファイルのスパース状態を保持できるようにします。

解説

  • /z の使用

    コピー フェーズ中に接続が失われた場合 (たとえば、サーバーがオフラインになった場合)、接続が再確立された後に処理が再開されます。 また、/z は、ファイルごとに完了したコピー操作の割合も表示します。

  • COPYCMD 環境変数での /y の使用。

    COPYCMD 環境変数で /y を使用できます。 コマンド ラインで /-y を使用すると、このコマンドをオーバーライドできます。 既定では、上書きするように求められます。

  • 暗号化されたファイルのコピー

    EFS をサポートしていないボリュームに暗号化されたファイルをコピーすると、エラーが発生します。 最初にファイルの暗号化を解除するか、EFS をサポートしているボリュームにファイルをコピーしてください。

  • ファイルの追加

    ファイルを追加するには、宛先に対して 1 つのファイルを指定しますが、ソースに対して複数のファイルを指定します (つまり、ワイルドカード文字または file1+file2+file3 形式を使用します)。

  • "宛先" の既定値

    "宛先" を省略して xcopy コマンドを実行すると、ファイルが現在のディレクトリにコピーされます。

  • "宛先" がファイルであるかディレクトリであるかの指定

    <宛先> に既存のディレクトリが含まれておらず、末尾に円記号 () が付いていない場合は、次のメッセージが表示されます。

    Does <Destination> specify a file name or directory name on the target(F = file, D = directory)?
    

    ファイルをファイルにコピーする場合は、F キーを押します。 ファイルをディレクトリにコピーする場合は、D キーを押します。

    /i コマンドライン オプションを使用すると、このメッセージを抑制できます。これにより、ソースが複数のファイルまたはディレクトリである場合、xcopy は宛先がディレクトリであると見なします。

  • xcopy コマンドを使用した "宛先" ファイルのアーカイブ属性の設定

    xcopy コマンドでは、この属性がソース ファイルに設定されているかどうかに関係なく、アーカイブ属性が設定されたファイルが作成されます。 ファイル属性と attrib の詳細については、「関連リンク」を参照してください。

  • xcopydiskcopy の比較

    サブディレクトリにファイルが格納されているディスクがあり、それを別の形式のディスクにコピーする場合は、diskcopy ではなく xcopy コマンドを使用してください。 diskcopy コマンドでは、ディスクがトラックごとにコピーされるため、ソース ディスクと宛先ディスクの形式が同じである必要があります。 xcopy コマンドにはこの要件はありません。 ディスク イメージの完全コピーが必要な場合以外は、xcopy を使用してください。

  • メモリ不足エラー

    ファイル名のパスが 255 文字を超えるファイルまたはフォルダーをコピーするために xcopy を実行すると、"メモリ不足" エラーが発生する可能性があります。

  • xcopy の終了コード

    xcopy によって返される終了コードを処理するには、バッチ プログラムの if コマンド ラインで ErrorLevel パラメーターを使用します。 if を使用して終了コードを処理するバッチ プログラムの例については、「関連リンク」を参照してください。 次の表に、各終了コードと説明を示します。

    終了コード 説明
    0 ファイルはエラーなしでコピーされました。
    1 コピーするファイルが見つかりませんでした。
    2 ユーザーが Ctrl + C キーを押して xcopy を終了しました。
    4 初期化エラーが発生しました。 メモリまたはディスク領域が不足しているか、コマンド ラインに無効なドライブ名または無効な構文が入力されました。
    5 ディスク書き込みエラーが発生しました。

1. ドライブ A からドライブ B にすべてのファイルとサブディレクトリ (空のサブディレクトリを含む) をコピーするには、次のように入力します。

xcopy a: b: /s /e

2. 前の例にシステム ファイルまたは隠しファイルを含めるには、次のように /h コマンドライン オプションを追加します。

xcopy a: b: /s /e /h

3. \Reports ディレクトリ内のファイルを、\Rawdata ディレクトリ内にある 1993 年 12 月 29 日以降に変更されたファイルで更新するには、次のように入力します。

xcopy \rawdata \reports /d:12-29-1993

4. 前の例の \Reports 内にあるすべてのファイルを日付に関係なく更新するには、次のように入力します。

xcopy \rawdata \reports /u

5. 前のコマンドでコピーされるファイルの一覧を (実際にファイルをコピーせずに) 取得するには、次のように入力します。

xcopy \rawdata \reports /d:12-29-1993 /l > xcopy.out

ファイル xcopy.out に、コピーされるすべてのファイルの一覧が記録されます。

6. \Customer ディレクトリとすべてのサブディレクトリをネットワーク ドライブ H: の \\Public\Address ディレクトリにコピーし、読み取り専用属性を保持し、H: に新しいファイルが作成されるときに確認メッセージが表示されるようにするには、次のように入力します。

xcopy \customer h:\public\address /s /e /k /p

7. 前のコマンドを発行する際に、\Address ディレクトリが存在しない場合はこれを作成し、新しいディレクトリを作成するときに表示されるメッセージが抑制されるように xcopy に指示するには、次のように /i コマンドライン オプションを追加します。

xcopy \customer h:\public\address /s /e /k /p /i

8.xcopy 操作を実行するバッチ プログラムを作成し、エラーが発生した場合にバッチ if コマンドを使用して終了コードを処理することができます。 たとえば、次のバッチ プログラムでは、xcopy のソース パラメーターと宛先パラメーターに置き換え可能パラメーターが使用されています。

@echo off
rem COPYIT.BAT transfers all files in all subdirectories of
rem the source drive or directory (%1) to the destination
rem drive or directory (%2)
xcopy %1 %2 /s /e
if errorlevel 4 goto lowmemory
if errorlevel 2 goto abort
if errorlevel 0 goto exit
:lowmemory
echo Insufficient memory to copy files or
echo invalid drive or command-line syntax.
goto exit
:abort
echo You pressed CTRL+C to end the copy operation.
goto exit
:exit

前のバッチ プログラムを使用して、C:\Prgmcode ディレクトリとそのサブディレクトリ内のすべてのファイルをドライブ B にコピーするには、次のように入力します。

copyit c:\prgmcode b:

コマンド インタープリターは、% 1C:\Prgmcode に置き換え、%2B: に置き換えます。次に、/e/s のコマンドライン オプションを使用して xcopy を使用します。 xcopy でエラーが発生した場合、バッチ プログラムは、終了コードを読み取り、適切な IF ERRORLEVEL ステートメントに示されているラベルに移動して、適切なメッセージを表示してから終了します。

9. この例では、空でないすべてのディレクトリと、アスタリスク記号の後にファイル拡張子が関連付けられたファイルをコピーします。

xcopy .\toc*.yml ..\..\Copy-To\ /S /Y

rem Output example.
rem  .\d1\toc.yml
rem  .\d1\d12\toc.yml
rem  .\d2\toc.yml
rem  3 File(s) copied

前の例のこの特定のソース パラメーター値 .\toc*.yml では、2 つのパス文字 .\ が削除された場合でも、同じ 3 つのファイルがコピーされます。 ただし、アスタリスクのワイルドカードをソース パラメーターから削除して .\toc.yml とした場合は、ファイルはコピーされません。