Распределение логов по папкам и подпапкам, основываясь на имени файла

Нужно было разобраться со следующей ситуацией: у фирмы есть несколько сайтов, с хостинга ежедневно приходят на почту логи. Менеджер получает почту программой The Bat!, в ней настроено правило, которое сохраняет все эти логи в одну папку. И через некоторое время там тысячи файлов и становится неудобно работать.

Сначала были созданы папки для каждого сайта, в них подпапки с годами, и логи раскидывались вручную. Менеджер просит автоматизировать попадание каждого лог-файла в свою папку и подпапку. Лог-файлы приходят с именем вида sitename_error_log_2011.03.15.zip.

Я написал следующий bat-файл и предложил использовать его (добавив, например, в планировщик):

@echo off & setLocal EnableDELAYedExpansion

rem sitename_error_log_2011.03.15.zip
set path=C:\Documents and Settings\username\Њ®Ё ¤®Єг¬Ґ­вл\б ©вл\sitename\logs

for /f %%f in ('dir /B *.zip') do (
for /f "delims=_ tokens=1,4" %%k in ("%%f") do (
for /f "delims=. tokens=1" %%y in ("%%l") do (
IF NOT EXIST "%path%\%%y\%%k\" ( mkdir "%path%\%%y\%%k" )
move %%f "%path%\%%y\%%k"
)
)
)

Pause

Кракозябры в пути – это Мои документы\сайты. Даже с chcp мне не удалось заставить windows воспринимать русские символы в файле.

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