Windowsにもともと備わっているrobocopyコマンドを使い、あらかじめバックアップしたいフォルダ名を記述したバッチファイルを作成しておきダブルクリック1発でバックアップできるようにした。
作った理由
バックアップについては、いくつか専用アプリを試した。
しかし、年に1回くらいしかバックアップをとらないので、使い方を忘れてしまう。
わたしは自分が使うWindowsパソコンは、基本的に元からあるCドライブをパーティション分割してCドライブ・Dドライブとして使っている。
| Cドライブ | Windows他、インストールしたアプリの保管 |
| Dドライブ | バックアップ対象の作成したファイルや写真など |
バックアップは、基本的にDドライブの中身だけ、という形にシンプルにしたいためのパーティション分割なのだ。
パソコンの中身を全てバックアップする人もいるが、時間が掛かるし記憶装置の容量も沢山必要になる。無駄だ。
robocopyを使うメリット
バックアップするときは、バッチファイルをダブルクリックするだけなので、1年に1回でも使い方を忘れることはない。
なお、差分バックアップになるので、コピー先とコピー元の日付が同じであればスキップされる。よって同じ対象フォルダであれば2回目からのバックアップ時間は短縮できる。
バックアップ用バッチファイル
backup.bat(文字コードはShift-JISで保存。メモ帳の場合はANSI)
@echo off
setlocal enabledelayedexpansion
rem ===== 設定(ここだけ書き換えればOK)=====
set SRC=D:\
set DST=E:\BackUp
set FOLDERS=aviutl claude work
rem =========================================
for /f %%i in ('powershell -NoProfile -Command "Get-Date -Format yyyy-MM-dd"') do set DT=%%i
set LOG=%DST%\backup_log_%DT%.txt
echo ============================================
echo バックアップ
echo ============================================
echo コピー元 : %SRC%
echo コピー先 : %DST%\
echo 対象 : %FOLDERS%
echo.
rem --- コピー先ドライブの確認 ---
if not exist %DST:~0,3% (
echo [エラー] %DST:~0,3% が見つかりません。USB HDD を接続してください。
pause
exit /b
)
rem --- コピー元フォルダの確認 ---
for %%F in (%FOLDERS%) do (
if not exist "%SRC%\%%F" (
echo [エラー] コピー元が見つかりません: %SRC%\%%F
pause
exit /b
)
)
choice /c yn /m "バックアップを開始します"
if errorlevel 2 goto :cancel
rem --- コピー先の親フォルダを先に作る(ログ出力先の確保)---
if not exist "%DST%" mkdir "%DST%"
set MAXCODE=0
for %%F in (%FOLDERS%) do (
echo.
echo --- %%F をコピー中 ---
robocopy "%SRC%\%%F" "%DST%\%%F" /E /DCOPY:DAT /R:1 /W:1 /XJ /NP /NFL /NDL /LOG+:"%LOG%"
if !errorlevel! gtr !MAXCODE! set MAXCODE=!errorlevel!
)
echo.
echo ============================================
if !MAXCODE! geq 8 (
echo [警告] エラーが発生しました。終了コード: !MAXCODE!
echo ログを確認してください: %LOG%
) else (
echo 正常終了しました。終了コード: !MAXCODE!
)
echo ============================================
goto :end
:cancel
echo 中止しました。
:end
echo.
pause
設定部分
設定は以下の3行の部分
rem ===== 設定(ここだけ書き換えればOK)=====
set SRC=D:\
set DST=E:\BackUp
set FOLDERS=aviutl claude work
rem =========================================
| SRC | コピー元フォルダ |
| DST | コピー先フォルダ(バックアップ先) |
| FOLDERS | コピー元フォルダにあるバックアップしたいフォルダ名を半角スペースで区切って複数入力できる ※このバッチファイルのままではスペースを含むフォルダ名には対応していないので注意が必要! |
上記の例ではD:¥の配下にあるaviutl、claude、workの3つのフォルダ内容がE:\BackUpフォルダ配下にバックアップ(コピー)される。
バックアップログ
バックアップログが日時形式で保存される。
前述の設定であればE:¥BackUp¥backup_log_2026-08-11.txtなどとして保存される。
ログにはバックアップ元(FOLDERS=…)に設定したフォルダ毎に
-------------------------------------------------------------------------------
ROBOCOPY :: Windows の堅牢性の高いファイル コピー
-------------------------------------------------------------------------------
開始: 2026年8月11日 17:37:44
コピー元 : D:\work\
コピー先 : E:\BackUp\
ファイル: *.*
オプション: *.* /NDL /NFL /S /E /DCOPY:DAT /COPY:DAT /NP /XJ /R:1 /W:1
------------------------------------------------------------------------------
------------------------------------------------------------------------------
合計 コピー済み スキップ 不一致 失敗 Extras
ディレクトリ: 432 0 432 0 0 0
ファイル: 7143 0 7143 0 0 0
バイト: 4.106 g 0 4.106 g 0 0 0
時刻: 0:19:26 0:19:04 0:00:03 0:00:19
終了: 2026年8月11日 17:37:45
などと保存され、コピーに失敗したかどうかやバックアップに掛かった時間(時刻)などが分かるようになっている。

コメント