CMD/BAT - Архивация логов с датой по месяцам (7zip)

Ответить
Аватара пользователя
ezmax

CMD/BAT - Архивация логов с датой по месяцам (7zip)

Сообщение ezmax »

Добрый день!

Требуется архивировать устаревшие логи в архив и архивы создавать помесячно. (Архиватор 7zip)

Логи хранятся в формате *YYMMDD.log и *YYMMDD.txt где * произвольный набор символов (длина чаще всего 2 шт и более)

архивы alogYYMM.7z

Желательно чтобы оставались логи за текущий месяц.

(замечу что логи текущей даты открыты для записи)





Первое что пришло в голову





Код:

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

hostname>>arclog.log 
echo %Date%>>arclog.log
echo %time%>>arclog.log
FOR /L %%g IN (10,1,12) DO FOR  %%m IN (01,02,03,04,05,06,07,08,09,10,11,12) DO (
if exist *%%g%%m*.*  7z u -t7z .\arc\alog%%g%%m.7z *%%g%%m??.* -m0=PPMd -mx=9
del *%%g%%m??.* /Q
)

недостаток у этой реализации - удаляются логи за текущий месяц



немного модифицировал но что-то не работает как надо Изображение





Код:

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

set Dtmp=%Date%
set DD=%Dtmp:~0,2%
set DM=%Dtmp:~3,2%
set DY=%Dtmp:~8,2%
hostname>>arclog.log 
echo %Date%>>arclog.log
echo %time%>>arclog.log
FOR /L %%g IN (10,1,12) DO FOR  %%m IN (01,02,03,04,05,06,07,08,09,10,11,12) DO (
if exist *%%g%%m*.*  7z u -t7z -sdel .\arc\alog%%g%%m.7z *%%g%%m??.* -m0=PPMd -mx=9
if %%g==%DY% (@if %%m==%DM% cls else del *%%g%%m??.* /Q) else del *%%g%%m??.* /Q
)

Подскажите что тут не так.

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



Еще один момент, 7zip (9.20) не умеет переносить (удалять после архивации) файлы в архив, появилась такая возможность в альфа версии 9.28 и то она не действует для команды (u) только для (а).

Применение альфа версии не желательно, да в данный момент на местах установлена 9.20
Ответить

Вернуться в «Скриптовые языки администрирования Windows»