среда, 18 сентября 2013 г.

Самописный скрипт для ротации логов

Сегодня ради этих вот нескольких строчек ломал голову несколько часов:

@ECHO OFF

SETLOCAL
SET ren_list=D:\Temp\1\ren_list.txt

FOR /F %%f in ('TYPE %ren_list%') DO (
IF EXIST %%f.bak DEL %%f.bak
IF EXIST %%f REN %%f %%~nxf.bak
)

:END

Сначала это были две строчки, которые, что называется, решали задачу "в лоб":

REM Проверяем - если есть старая версия лог-файла, то удаляем её
IF EXIST D:\Temp\1\logfile.bak DEL D:\Temp\1\logfile.bak
REM Переименовываем лог-файл
REN D:\Temp\1\logfile.txt logfile.bak

Потом подумалось, что может оказаться больше одного лога, которые жрут место и которые надо бы периодически удалять. Не, можно, конечно, продолжать лепить строчки дальше, для каждого файла, но это же НЕКРАСИВО. Поэтому я начал чесать лысину в надежде, что это поможет придумать, как сделать красиво :-)

Пример кода для работы со списком у меня уже был, вот от него и начал плясать. Сначала было два списка: файлы, которые нужно переименовать и имена, которые должны получиться. Потом стало понятно, что второй список не нужен. Затем пришлось играться с именами файлов - полное имя/короткое имя, с расширением .bak и без него. Ну и всё такое. Поначалу получалась какая-то ересь, но постепенно из неё как-то получились эти строчки.

Как программисты пишут НОРМАЛЬНЫЕ программы, мне не понять. Они ведь по две строчки кода в день не пишут, верно?

Комментариев нет :

Отправить комментарий