COPY・XCOPY・ROBOCOPYの違いとERRORLEVEL一覧!用途別の選び方も解説

Windows
記事内に広告が含まれています。

1. Windowsのコピーコマンドの基本:COPY・XCOPY・ROBOCOPYとは?


Windowsのコマンドプロンプトでは、ファイルやフォルダーをコピーするために次の3つのコマンドが使えます。

  • COPY:基本的なファイルコピーコマンド。単純なコピー向け。
  • XCOPY:COPYの拡張版で、フォルダーや属性を保持してコピー可能。
  • ROBOCOPY:高機能なコピーコマンド。ネットワーク経由のコピーや同期に最適。

2. COPY・XCOPY・ROBOCOPYの違いを比較!用途別の選び方

  • COPY → 単純なファイルコピー向け
  • XCOPY → ある程度の柔軟性あり、フォルダー単位のコピーが可能
  • ROBOCOPY → 高速・高機能でエラーに強い。バックアップ用途に最適

最近では、XCOPY は非推奨となり、代わりに ROBOCOPY を使うのが推奨されています。


3. ERRORLEVELとは?COPY・XCOPY・ROBOCOPYのエラーハンドリング

ERRORLEVEL とは、コマンドの実行結果を示す数値です。
バッチスクリプトでエラー処理を行う際に使用されます。

一般的な ERRORLEVEL の考え方:

  • 0 → 正常終了
  • 1以上 → 何らかのエラーが発生

例えば、バッチファイルでエラーチェックを行う場合:

COPY file1.txt file2.txt
IF ERRORLEVEL 1 (
    ECHO コピーに失敗しました。
)

ROBOCOPY の場合、成功時でも 0 以外の値を返すため、特別な処理が必要です。


4. 各コマンドの ERRORLEVEL 一覧とバッチファイルでの活用方法

4.1 COPY コマンドの ERRORLEVEL 一覧

以下に、WindowsのcopyコマンドのERRORLEVEL一覧を表形式でまとめました。

ERRORLEVEL説明
0成功
1一部のファイルがコピーされなかった
2ユーザーがキャンセルした
3その他のエラー(例: アクセス拒否)

この表を参考にして、copyコマンドのエラーハンドリングを行う際に役立ててください。

COPY のエラーチェックの例:

COPY C:\\file.txt D:\\backup\\
IF ERRORLEVEL 1 (
    ECHO ファイルのコピーに失敗しました。
)


4.2 XCOPY コマンドの ERRORLEVEL 一覧

以下に、WindowsのxcopyコマンドのERRORLEVEL一覧を表形式でまとめました。

ERRORLEVEL説明
0成功
1一部のファイルがコピーされなかった
2ユーザーがキャンセルした
4初期化エラーが発生しました。 メモリまたはディスク容量が不足しているか、コピー先のドライブ、ディレクトリが見つからないなどの構文エラーの可能性も
5アクセスが拒否された
上記以外その他のエラー

この表を参考にして、xcopyコマンドのエラーハンドリングを行う際に役立ててください。

XCOPY のエラーチェックの例:

XCOPY C:\\source D:\\destination /E /I
IF ERRORLEVEL 5 (
    ECHO ディスク書き込みエラーが発生しました。
) ELSE IF ERRORLEVEL 4 (
    ECHO 初期化エラーが発生しました。
) ELSE IF ERRORLEVEL 2 (
    ECHO コピー処理がユーザーにより中断されました。
) ELSE IF ERRORLEVEL 1 (
    ECHO 一部のファイルがコピーされませんでした。
) ELSE (
    ECHO コピー成功
)


4.3 ROBOCOPY コマンドの ERRORLEVEL 一覧

ROBOCOPY は通常のコマンドと異なり、成功時でも 0 以外の ERRORLEVEL を返す 場合があります。
以下に、WindowsのrobocopyコマンドのERRORLEVEL一覧を表形式でまとめました。

ERRORLEVEL説明
0成功
条件に一致するファイルがなくコピーはされませんでした。ファイルは宛先ディレクトリに既に存在します。そのため、コピー操作はスキップされました。
1成功(コピーされたファイルはあるが、いくつかの問題が発生)
2一部のファイルがコピーされなかった(宛先ディレクトリのみに存在するファイルがいくつか存在します)
3追加のファイルが存在しました。 
5一部のファイルがコピーされました。 一部のファイルが一致しませんでした。 
6ファイルはコピーされていません。
追加のファイルと一致しないファイルが存在します。 つまり、ファイルは宛先ディレクトリに既に存在します。
7ファイルがコピーされ、ファイルの不一致が存在し、さらに追加のファイルが存在しました。
8複数のファイルがコピーされませんでした。
16その他の致命的なエラー

この表を参考にして、robocopyコマンドのエラーハンドリングを行う際に役立ててください。
ROBOCOPY は ERRORLEVEL の扱いが特殊なので、ERRORLEVEL 8 以上をエラーとし、それ未満は正常と判断する のが一般的です。

ROBOCOPY のエラーチェックの例:

ROBOCOPY C:\source D:\backup /MIR
IF ERRORLEVEL 8 (
    ECHO エラー: 複数のファイルがコピーされませんでした。
) ELSE IF ERRORLEVEL 7 (
    ECHO 警告: ファイルの不一致が存在します。
) ELSE IF ERRORLEVEL 6 (
    ECHO 警告: 一致しないファイルがあります。
) ELSE IF ERRORLEVEL 5 (
    ECHO 警告: 一部のファイルが一致しませんでした。
) ELSE IF ERRORLEVEL 3 (
    ECHO 警告: 一部のファイルがコピーされました。
) ELSE IF ERRORLEVEL 2 (
    ECHO 警告: 追加のファイルが存在します。
) ELSE IF ERRORLEVEL 1 (
    ECHO 成功: すべてのファイルが正常にコピーされました。
) ELSE (
    ECHO 成功: コピー操作はスキップされました。
)


5. まとめ:状況に応じた適切なコマンドの選び方

  • 単純なコピー → COPY
  • フォルダー単位のコピー → XCOPY
  • 大規模なコピーやバックアップ → ROBOCOPY

また、ERRORLEVEL を活用すれば、バッチスクリプトでエラーハンドリングが可能になります。
特に ROBOCOPY は 正常終了時でも 0 以外を返す ので、ERRORLEVEL の解釈に注意しましょう。

免責規定

この記事で提供される情報は、一般的なガイダンスを目的としており、すべての環境やシステムでの動作を保証するものではありません。
OSのバージョンやリリースによっては、記載されている事が実行できない、または異なる結果をもたらす可能性があります。
また、会社所有のパソコン、スマホ、タブレットなどでは、ポリシーや権限によって実行できない場合があります。
この記事の情報を使用することによって生じる問題や結果について、筆者およびサイト管理者は責任を負いません。
すべての操作は自己責任で行ってください。

最後までお読みいただきありがとうございました。
またお会いしましょう!

コメント

タイトルとURLをコピーしました