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のバージョンやリリースによっては、記載されている事が実行できない、または異なる結果をもたらす可能性があります。
また、会社所有のパソコン、スマホ、タブレットなどでは、ポリシーや権限によって実行できない場合があります。
この記事の情報を使用することによって生じる問題や結果について、筆者およびサイト管理者は責任を負いません。
すべての操作は自己責任で行ってください。
最後までお読みいただきありがとうございました。
またお会いしましょう!
コメント