なんか昔に sh で組んだけど,sh が使える普通の環境なら logrotate.d 使えばいいと気付いて,実際には使ってなかった.
(hadacchi_blog : logrotateをするスクリプト)
win で使いたくなって,cygwin はもはや使ってないので,バッチファイルで作った.
使い方は,以下を logrotate.bat とした時,
logrotate.bat hogehoge.ext
エラー処理してないので,利用時は自分で注意してね.
@echo off
setlocal enabledelayedexpansion
for %%i in (%*) do (
set file=%%~ni
set ext=%%~xi
set /a num=0
:LOOP
if exist !file!.!num!!ext! ( set /a num+=1 ) else goto ENDLOOP
goto LOOP
:ENDLOOP
set /a num-=1
for /l %%n in (!num!,-1,0) do (
set /a tonum=%%n+1
ren !file!.%%n!ext! !file!.!tonum!!ext!
if errorlevel 1 ( goto ERR )
)
copy !file!!ext! !file!.0!ext!
if errorlevel 1 ( goto ERR )
)
exit
:ERR
pause