Сегодня хочу показать вам очередной простенький скрипт. На этот раз это – 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, если ее не задать, то в цикле будут невозможны операции с переменными.
Надеюсь скриптик окажется вам полезным.
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Поделитесь статьей с друзьями в соц. сетях, возможно, она будет им полезна.
Если вам помогла статья, вы можете >>отблагодарить автора<<