曜日毎にファイルのバックアップを Windowバッチ(bat)でやってみる

2020年10月22日木曜日

bat windows

t f B! P L

タイトル画像

今回は、曜日別にファイル/フォルダをバックアップして、7世代分のバックアップを取る方法について、紹介します。

前回、Windowバッチで、曜日を取得する方法を紹介しましたので、それの応用編です。

バックアップのイメージ

スクリプトの、処理イメージは以下の通りです。
このスクリプトを、タスクスケジューラで、毎日動かすイメージです。

バックアップ処理イメージ

※ Zip圧縮に7zipを使います、事前にインストールしておいて下さい。
 7zipのダウンロードは こちら

コードの内容

@echo off

@rem 7zipのインストール先パス
set ZIP_PATH="C:\Program Files\7-Zip"
@rem バックアップ元のファイル又はフォルダパスを指定
set BACKUP_DIR=C:\path\to\backup\from

@rem ファイル圧縮時に使用する一時ディレクトリのパスを指定
set WORK_DIR=C:\path\to\temp

@rem バックアップ先のフォルダパスを指定
set OUTPUT_DIR=\\backupserver\path\to\backup\to

set dt=%date:~-10%
set yyyy=%dt:~0,4%
set mm=%dt:~5,2%
set dd=%dt:~8,2%
set today="%yyyy%/%mm%/%dd% 12:00:00"

echo WScript.echo weekday(%today%) > tmp.vbs
for /f %%X in ('cscript //nologo tmp.vbs') do set YOUBI=%%X

if %YOUBI%==7 (set WDAY=SAT)
if %YOUBI%==6 (set WDAY=FRI)
if %YOUBI%==5 (set WDAY=THU)
if %YOUBI%==4 (set WDAY=WED)
if %YOUBI%==3 (set WDAY=TUE)
if %YOUBI%==2 (set WDAY=MON)
if %YOUBI%==1 (set WDAY=SUN)

@rem 7zipで圧縮 出力先はWORK_DIR 名前はbackup_tmp.zip
%ZIP_PATH%\7z.exe a %WORK_DIR%\backup_tmp.zip %BACKUP_DIR%

@rem 曜日に対応した名前にリネーム
rename %WORK_DIR%\backup_tmp.zip backup_%WDAY%.zip 

@rem バックアップ先のフォルダにbackup_%WDAY%.zipを上書き
xcopy /y %WORK_DIR%\backup_%WDAY%.zip %OUTPUT_DIR%

@rem WORK_DIRに作成した一時ファイルを削除
del %WORK_DIR%\backup_%WDAY%.zip

スポンサーリンク

最後に

バックアップ先は、ローカルディスクではなく、外付けのHDDや、バックアップサーバの共有フォルダに取るようにしましょう。

本格的なバックアップは、専用のソフトでやった方がいいですが、簡易的なバックアップであれば、これで十分だと思います。

スポンサーリンク

QooQ