Скрипт удаления старых логов

Выкладываем готовые скрипты. Запрашиваем скрипты.
Ответить
Аватара пользователя
kamchatik
Администратор
Сообщения: 46
Зарегистрирован: 08 окт 2013, 15:26
Откуда: Харьков
Контактная информация:

Скрипт удаления старых логов

Сообщение kamchatik » 05 окт 2015, 13:21

Довольно часто встречаются ситуации, когда приложения пишут довольно таки большие логи. Это съедает дисковое пространство, что может привести к переполнению и остановке работы приложения.

Вот такой скриптик оформляем в виде .bat файла и добавляем в Windows Scheduler

Код: Выделить всё

echo on
rem Delete logs 5 days old
FORFILES /p path_to_logs /s /m *.* /d -5 /c "CMD /c del /Q @FILE"

где path_to_logs - это путь к папке с логами (путь должен заканчивать слешом)

Особенность скрипта еще в том что, он удаляем логи и в подапках

Аватара пользователя
kamchatik
Администратор
Сообщения: 46
Зарегистрирован: 08 окт 2013, 15:26
Откуда: Харьков
Контактная информация:

Re: Скрипт удаления старых логов

Сообщение kamchatik » 06 окт 2015, 00:16

Еще один вариант. Удаляет старые логи вместе с папками.
Особенность - оставляет указанное количество папок с логами не по дате, а последние по количеству. Т.е. сохраняет просто 10 последних архивов, а не за последние 10 дней (в случае, если бэкап по какой-либо причине не прошел, то архивных копий за последние 10 дней может оказаться значительно меньше, а то и вообще не оказаться...), а все остальное удаляет:

Код: Выделить всё

@echo off
SetLocal EnableExtensions

set BackUp=F:\share\databus
set Num=600

pushd %BackUp%
for /f "tokens=* delims=" %%D in ('dir /ad /b /o-d') do call :Proceed "%%D"
popd
exit

:Proceed
if not %Num%==0 set /a Num-=1&exit /b
echo %date% %time%: Erase %1>>%~dpn0.log
rd /s /q %1 2>nul >nul
exit /b
Лог выполнения записывает в txt файл с таким же именем как bat файл.

Ответить