Войти

Показать полную графическую версию : [решено] Переименование файлов + смена расширения


pzh2393
26-02-2013, 14:40
Добрый день!
Помогите, пожалуйста, с переименованием файлов, а то мой код что-то не работает...
for /f "tokens=1,2 usebackq" %i in (`dir/b/a-d "* *.jpg"`) do ren "IMG_%i_%j" "%i - %j"
Имеется группа файлов с телефона, имена вида "VID_20130215_123456.3gp", "IMG_20130215_123456.jpg", которые хотелось бы привести к виду "2013.02.15 - 12.34.56.avi" и "2013.02.15 - 12.34.56.jpg" соответственно.
Перекодировать 3gp в avi не нужно, достаточно только сменить расширение файла.

megaloman
26-02-2013, 16:23
@Echo Off

FOR %%f IN (*.3gp) DO Call :ReFile "%%f" avi
FOR %%f IN (*.jpg) DO Call :ReFile "%%f" jpg
GoTo :Eof

:ReFile
Set NN=%~n1
Set NN=%NN:~-15%
Set NN=%NN:~0,4%.%NN:~4,2%.%NN:~6,2%-%NN:~9,2%.%NN:~11,2%.%NN:~13,2%.%2
move /Y %1 "%NN%" >nul или если нужно с пробелами в новом имени, переписать Set NN=%NN:~0,4%.%NN:~4,2%.%NN:~6,2% - %NN:~9,2%.%NN:~11,2%.%NN:~13,2%.%2

pzh2393
26-02-2013, 17:45
Спасибо!

megaloman
27-02-2013, 10:09
pzh2393, Уточнение! Чтобы батник в папке с файлами можно было запускать многократно с правильным результатом (это актуально для файлов, для которых не меняется расширение) надо аккуратнее написать маску в For
FOR %%f IN (IMG*.jpg) DO Call :ReFile "%%f" jpg Либо, как вариант, переименованные файлы перемещать в другую папку (дописать путь в команде Move).




© OSzone.net 2001-2012