速い!と定評のある「FastCopy」で複数条件を連続でバックアップするバッチファイル

速い!で有名なファイルの高速コピーができるフリーソフト「FastCopy」でバックアップを行うバッチファイルを作ったのでメモ。

使い方やスクリーンショットは省略します。

バッチファイル

複数のHDD/SSDのコピー元と、複数のコピー先のジョブを順番に行うものです。例として、4つのコピー元のディスクを、4つのバックアップ先に同期コピー(sync)します。

コピー元とコピー先の条件を増やしたり、減らしたりするだけで順番に条件を読込み、ジョブを実行します。

@echo off
rem =====================================
rem FastCopyによるバックアップ
rem =====================================

rem 開始確認
set /p YORN="開始しますか? (y or n):"
if not '%YORN%'=='y' (
    echo "処理を中止します。"
    goto END
)

rem 遅延環境変数(!i!)の有効化
setlocal ENABLEDELAYEDEXPANSION

rem FastCopy実行ファイル
set FastCopyPATH="C:\Program Files\FastCopy\fastcopy.exe"

rem 除外するフォルダー

set Jogai="$RECYCLE.BIN\;System Volume Information" 

rem コピー元とコピー先
set FromFolder_1="F:\Music"
set ToFolder_1="L:\Backup"

set FromFolder_2="G:\Photo"
set ToFolder_2="M:\Backup"

set FromFolder_3="H:\Share"
set ToFolder_3="N:\Backup"

set FromFolder_4="I:\Video"
set ToFolder_4="O:Backup\"

rem バックアップを順番に実行
set i=1
:BEGIN
call set FromFolder=%%FromFolder_!i!%%
call set ToFolder=%%ToFolder_!i!%%
if defined FromFolder (
 echo Job:!i! !FromFolder!から!ToFolder!にコピーしています。
  %FastCopyPATH% /auto_close /cmd=sync /no_confirm_del /bufsize=256 /log /exclude=%Jogai% !FromFolder! /to=!ToFolder!
  set /A i+=1
  goto :BEGIN
)

echo.
echo バックアップが完了しました。
pause

:END

コマンドスイッチについて

以下の部分がFastCopyに命令する部分ですが、この意味や他のコマンドスイッチについては作者のホームページをご参照ください。

%FastCopyPATH% /auto_close /cmd=sync /no_confirm_del /bufsize=256 /log /exclude=%Jogai% !FromFolder! /to=!ToFolder!

ちなみに、/auto_closeを外すと一つの条件のコピーが終わると、次の条件に進んでくれません。

/cmd=syncは同期モードです。バックアップ先にファイルが無ければコピーしてくれ、コピー元から削除されたファイルがバックアップ先にあれば削除します。

/no_confirm_delは同期でコピー先のファイルを削除する際にメッセージを出さずに削除します。