Xcopyでフォルダーを丸ごと複製・バックアップ - Windowsコマンド実用例
Xcopy コマンドを使えば、フォルダー全体を手軽にコピー・バックアップできます。Robocopy よりもシンプルなコピー処理に適しており、USBメモリ等へのバックアップや簡易的な移行作業に活用できます。
使用コマンド
基本的なスクリプト
@echo off
setlocal
set DATE=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
set SRC=C:\Users\User\Documents
set DEST=D:\Backup\Documents_%DATE%
if not exist "%DEST%" mkdir "%DEST%"
xcopy "%SRC%" "%DEST%" /E /H /Y
各オプションの意味は以下の通りです。
/E
: 空フォルダーも含めてコピー/H
: 隠しファイルやシステムファイルも含めてコピー/Y
: 上書き確認を省略
補足事項
- コピー先のディレクトリは Mkdir (Md) で事前に作成しておくのがベターです。存在しない場合、Xcopy は「<名前> は受け側のファイル名ですか、ディレクトリ名ですか(F=ファイル、D=ディレクトリ)?」というメッセージと入力待ちを行うため、自動処理の弊害となります。
- または「/I」オプションを使う方法もあります(ただし作成できなかった場合のエラー表示が分かりにくくなる場合があります)。詳細はXcopy「ファイル名かディレクトリ名かを問う出力」をご覧ください。
xcopy
は Windows 10 以降でも使用可能ですが、今後は Robocopy の使用が推奨される場面もあります。Robocopy が推奨されるケース:
Robocopy は Xcopy よりも信頼性・柔軟性が高く、業務用途のバックアップでは推奨されることが多いです。主な理由は以下の通りです:
- コピー失敗時に自動再試行される(ネットワークやファイルロックに強い)
- 差分コピーやミラーリングが可能(/MIR, /XO など)
- ログ出力機能(/LOG)で結果を記録できる
- 長いパスや NTFS 権限(ACL)のコピーにも対応
UNCパス(ネットワーク共有)に対しては Xcopy が不安定なことがあるため注意が必要です。これは Xcopy に再試行機能がないため、接続の一時的な途切れやファイルロックなどによってコピー処理が中断されやすいことが主な理由です。安定性を重視する場合は Robocopy の利用を検討してください。
一方で Robocopy は構文が複雑なため、シンプルにコピーしたいなどの用途には Xcopy が適しています。
応用例
- USBメモリへのバックアップ:
set DEST=E:\Backup\Documents_%DATE% if not exist "%DEST%" mkdir "%DEST%" xcopy "%SRC%" "%DEST%" /E /H /Y
USBメモリのドライブレター(例:「E:」)を確認し、接続時に実行することで手軽な複製を行うことができます。
※ 接続時の実行方法については、「特定のUSBメモリが接続されたときにだけ自動処理を実行」 もご覧ください。
- 定期実行に登録:
schtasks /Create /TN "DailyXcopy" /TR "C:\scripts\backup_xcopy.bat" /SC DAILY /ST 22:00 /RL HIGHEST /F
「schtasks /create」で登録することで毎日定時にスクリプトを実行し、日ごとのバックアップを自動化します。