Граф О'Манн (graf_o_mann) wrote,
Граф О'Манн
graf_o_mann

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

16:52 18.09.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 и без него. Ну и всё такое. Поначалу получалась какая-то ересь, но постепенно из неё как-то получились эти строчки.

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

оригинал записи в блоге Graf O'Mann



Яндекс.Метрика






Tags: windows, компьютер, программы, работа, техническое, умничаю
Subscribe

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments