Нужно было разобраться со следующей ситуацией: у фирмы есть несколько сайтов, с хостинга ежедневно приходят на почту логи. Менеджер получает почту программой 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 воспринимать русские символы в файле.