Вы здесь

Bat скрипт для ротации логов и не только


Bat скрипт для ротации логов и не только

Сегодня хочу показать вам очередной простенький скрипт. На этот раз это – bat скрипт для ротации логов, да в общем то и не только логов, а в принципе любых файлов. Автоматическое переименование и удаление осуществляется, если файл достигнет заданного размера.

Текст скрипта:

@echo off
set file=query.log
set path="c:\logs\"
set maxbytesize=268436480
set filescount=7
cd %path%
for /F "usebackq" %%A in ('%file%') do set size=%%~zA
if %size% LSS %maxbytesize% (
echo "we should do nothing"
) else (
    setlocal ENABLEDELAYEDEXPANSION
    set /a j=%filescount%-1
    del /f /q %file%.%filescount%
    for /l %%i in (!j!,-1,0) do (
        set /a k=%%i+1
        ren %file%.%%i %file%.!k!
    )
    endlocal
    ren %file% %file%.0
)

Принцип работы предельно прост – мы задаем имя файла, путь до него, максимальный размер, при достижении которого будет осуществлено переименование, а также количество архивных файлов.

Далее мы смотрим размер файла. Если он окажется больше заданного нами, то переименовываем его, а также все архивные файлы, самый старый файл – удаляется, если количество файлов равно заданному нами.

В принципе тут всё просто, но обратите внимание на переменную ENABLEDELAYEDEXPANSION, если ее не задать, то в цикле будут невозможны операции с переменными.

Надеюсь скриптик окажется вам полезным.

2 1

Поделитесь статьей с друзьями в соц. сетях, возможно, она будет им полезна.


Если вам помогла статья, вы можете >>отблагодарить автора<<