これまで学んだバッチファイルの技術を組み合わせて、実際に使える業務自動化バッチを作ります。バックアップ・ログ整理・一括リネームの3本立てです。
実践1:日付付きバックアップバッチ
@echo off
rem 日付付きバックアップバッチ
set SRC=C:\work
set DST=D:\backup
set DATE_STR=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
set BACKUP_DIR=%DST%\%DATE_STR%
if not exist "%BACKUP_DIR%" mkdir "%BACKUP_DIR%"
echo バックアップ開始: %DATE% %TIME%
robocopy "%SRC%" "%BACKUP_DIR%" /e /xo /log:"%BACKUP_DIR%\backup.log"
if %errorlevel% leq 7 (
echo バックアップ完了
) else (
echo バックアップでエラーが発生しました
)
pause実践2:古いログファイルの自動削除
@echo off
rem 30日以上前のログファイルを削除
set LOG_DIR=C:\logs
set DAYS=30
echo %DAYS%日以上前のログファイルを削除します
forfiles /p "%LOG_DIR%" /s /m *.log /d -%DAYS% /c "cmd /c del @path"
if %errorlevel%==0 (
echo 削除完了
) else (
echo 対象ファイルなし(またはエラー)
)
pause実践3:ファイルの一括リネーム
@echo off
rem フォルダ内の画像ファイルを連番リネーム
set DIR=C:\photos
set COUNT=1
setlocal enabledelayedexpansion
for %%f in ("%DIR%\*.jpg") do (
set NUM=00!COUNT!
set NUM=!NUM:~-3!
ren "%%f" "photo_!NUM!%%~xf"
set /a COUNT+=1
)
echo リネーム完了: !COUNT!件
pauseまとめ
- robocopyで差分バックアップを自動化できる(errorlevel 7以下が正常)
- forfilesで指定日数より古いファイルを自動削除できる
- 遅延展開と連番処理でファイルの一括リネームができる
- バッチファイルの技術を組み合わせれば多くの業務を自動化できる


コメント