Войти

Показать полную графическую версию : [решено] Перемещение файлов, содержащих дату в названии.


Майклс
14-03-2010, 15:45
Добрый день. Подскажите текст батника для задачи:
Имеется каталог с группой файлов с именами вида <постоянная часть>_<дата>nnn.jpg,
где дата определяется в формате ггггммдд, а после нее идет номер nnnn. Необходимо из этого каталога, где содержаться файлы за несколько месяцев переместить файлы в раздельные каталоги Месяц\День месяца (от 1 до 31).
Можно несколько упростить и не выделять отдельно месяц, но хотя бы рассортировать файлы по папкам с отельными днями, например:
<постоянная часть>_20100301nnn.jpg в папку "1"
<постоянная часть>_20100312nnn.jpg, в папку "12"
и т.д.
Благодарю заранее.

amel27
14-03-2010, 16:29
@Echo Off

Set NAME=постоянная_часть
Set ROOT=C:\TEST

PushD %ROOT%
For %%i In (%NAME%_2010???????.jpg) Do Set $N=%%i& Call :FILE_MOVE
Exit /B

:FILE_MOVE
If Not Exist %$N:~-11,2%\%$N:~-9,2%\ MD %$N:~-11,2%\%$N:~-9,2%
Move "%$N%" %$N:~-11,2%\%$N:~-9,2%\
GoTo :EOF

Майклс
16-03-2010, 01:37
Спасибо, работает!
я так понял, что 9,2 и 11, 2 - это расстояние от конца названия файла? пришлось немного модифицировать, вопросов в названии было больше =)
хотелось бы еще узнать, как можно переименовать перемещаемые файлы так, чтобы удалить начальную часть (%NAME%) и разделить оставшиеся части названия символами, например
_m20100315234038 ---> 2010-03-15_(23.40.38)

amel27
17-03-2010, 16:46
это расстояние от конца названия файла? »
именно так, для справки: "SET /?"

например
_m20100315234038 ---> 2010-03-15_(23.40.38) »
@Echo Off

Set $V=_m20100315234038
Set $R=%$V:~2,4%-%$V:~6,2%-%$V:~8,2%_(%$V:~10,2%.%$V:~12,2%.%$V:~14,2%)

Echo.
Echo %$V%
Echo %$R%
Echo.

PAUSE

Huxlay
27-07-2010, 15:34
Dyskusje są zawsze głównym źródłem rzetelnych informacji oraz zapewnienie komfortowych wyniki, można uzyskać natychmiastowy i wiarygodnych informacji, które z pewnością pomogą Ci w każdej dziedzinie swojego zainteresowania.




© OSzone.net 2001-2012