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