概要 †各種ログファイルを一定期間保存する処理について、 処理パターンを分類して管理方法を整理する。
世代番号管理 †保存ログファイルに一連番号をつけ、一定世代(NMAX)を超えたものは削除する。 一世代前のログファイルは log1.txt、二世代前は log2.txt 等とする。 set NMAX=30 for /l %%N in (%NMAX%,-1,2) do call :shift %%N move "%LOG%\log.txt" "%OLDLOG%log1.txt" goto :eof :shift set /a L=%1-1 if exist "%OLDLOG%\log%L%.txt" move /y "%OLDLOG%\log%L%.txt" "%OLDLOG%\log%1.txt" goto :eof 日付ファイル名での一定日数保存(世代管理) †保存ログのファイル名は、logYYYYMMDD.txt のように年月日をつける。 一定日数(NMAX)保存し、それを超えたものは削除する。 set NMAX=90 move "%LOG%\log.txt" "%OLDLOG%\log%YYYYMMDD%.txt" for /f "skip=%NMAX% delims=" %%F in ('dir /b /o-n "%OLDLOG%\log????????.txt"') do del "%%F" 日付ファイル名でのnヶ月保存 †保存ログのファイル名は、logYYYYMMDD.txt のように年月日をつける。 Nヶ月保存し、それを超えたものは削除する。 set N=3 move "%LOG%\log.txt" "%OLDLOG%\log%YYYYMMDD%.txt" set /a M=1%YYYYMMDD:~4,2%-100 if %M% gtr %N% (set /a OLD=YYYYMMDD-N*100) ELSE (set /a OLD=YYYYMMDD-10000+1200-N*100) for %%F in ("%OLDLOG%\log????????.txt") do if %%~nF leq log%OLD% del "%%F" ここでは、N は12以下とした。13ヶ月以上の場合は、年と月に分けて、 それぞれ引き算するとよいだろう。 日付ファイル名でのnヶ月保存(年月ディレクトリ管理) †保存ログのファイル名は、logYYYYMMDD.txt のように年月日をつける。 %OLDLOG% の下に %YYYYMM% のディレクトリを作ってそこに保存し、 Nヶ月経ったらディレクトリごと削除する。 set N=3 if not exist "%OLDLOG%\%YYYYMM%\*" md "%OLDLOG%\%YYYYMM" move "%LOG%\log.txt" "%OLDLOG%\%YYYYMM%\log%YYYYMMDD%.txt" set /a M=1%YYYYMM:~4,2%-100 if %M% gtr %N% (set /a OLD=YYYYMM-N) ELSE (set /a OLD=YYYYMM-100+12-N) if exist "%OLDLOG%\%OLD%\*" rd /s /q "%OLDLOG%\%OLD%" ここでは、N は12以下とした。13ヶ月以上の場合は、年と月に分けて、 それぞれ引き算するとよいだろう。 |