Programming Field

Xcopyでフォルダーを丸ごと複製・バックアップ - Windowsコマンド実用例

Xcopy コマンドを使えば、フォルダー全体を手軽にコピー・バックアップできます。Robocopy よりもシンプルなコピー処理に適しており、USBメモリ等へのバックアップや簡易的な移行作業に活用できます。

使用コマンド

  • Xcopy - フォルダーやファイルを複製
  • If - 条件付き実行処理
  • Set - 環境変数の設定と日付取得

基本的なスクリプト

@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=ディレクトリ)?」というメッセージと入力待ちを行うため、自動処理の弊害となります。
  • 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」で登録することで毎日定時にスクリプトを実行し、日ごとのバックアップを自動化します。

関連項目