IISとかのログをただローテートするだけだと結構な容量を食うので、ZIP圧縮した上でローテートする。
バッチでやるとzipコマンドのライブラリを入れなければいけないので、やはりPowerShell。
ログ圧縮ローテート.ps1
# ログのパス
$Path = "D:\Logs\IIS\W3SVC1"
# zip圧縮する閾値(日)
$zipCompressTerm = 5
# zipを削除する閾値(日)
$zipDeleteTerm = 180
# zip圧縮対象のログを取得
$Items = Get-ChildItem -Path $Path | ?{$_.LastWriteTime -le (Get-Date).AddDays(-$zipCompressTerm) -and $_.Name -like "*.log"}
# 対象のアイテムをZIP圧縮
$Items | %{Compress-Archive -Path $_.FullName -DestinationPath "$($Path)\$($_.Name).zip"}
# ログを削除
$Items | Remove-Item
# zip削除対象を削除
Get-ChildItem -Path $Path | ?{$_.LastWriteTime -le (Get-Date).AddDays(-$zipDeleteTerm) -and $_.Name -like "*.zip"} | Remove-Item