バッチファイルで logrotate

[`evernote` not found]
Bookmark this on Hatena Bookmark
Share on Facebook
LINEで送る

なんか昔に 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