Здравствуйте, Иван,
ИШ> Вот такой вопросик: надо перекодировать с помощью кодека lame
ИШ> несколько папок с mp3 файлами в более низкий битрейт. Я использую для
ИШ> этого батник следующего содержания:
ИШ> echo off
ИШ> for /r %%i in (*.mp3) do (
ИШ> c:\lame\lame.exe -S -h -a --abr 57 --priority 4 "%%i" "d:\test\%%i"
ИШ> )
ИШ> 1. С параметром /r конвертация не происходит.
Дело в том, что надо хорошо себе представлять, что будет находиться в
переменной %%i. При использовании параметра /r в %%i попадает весь
путь к файлу вместе с именем файла. Соответственно, имя выходного
файла будет некорректным, ибо будет содержать два раза имя диска.
Подавить это легко: можно использовать модификатор %%~ni%%~xi (что даёт
имя файла без пути) или %%~pi%%~ni%%~xi (имя файла вместе с путём к
нему, но без диска).
Однако тут возникает другая проблема. Если использовать только имя
файла, то все выходные файлы будут свалены в одну директорию. А если
использовать пути, то я сильно сомневаюсь, что лэйм
самостоятельно может создавать каталоги произвольной вложенности.
Наверное, я бы сначала в директории d:\test\ воссоздал бы полную
структуру директорий музыки с пустыми подкаталогами, и использовал бы
имена файлов с путями.
ИШ> 3. Как сделать, чтобы в папке d:test создавались вложенные папки, а
ИШ> затем в них сохранялись перекодированные файлы?
Структуру можно сделать тупо: скопировать всю музыку, и
удалить все файлы из подкаталогов. Можно воспользоваться командой
xcopy с пустыми подкаталогами и несуществующим расширением. А можно
написать бат-файл вроде такого
for /d /r %%d in (*.*) do (
g:
mkdir "\test%%~pd"
d:
cd \music\
)
Здесь предполагается, что музыка лежит в папке d:\music\ а в
результате в папке g:\test\ возникает папка music с пустыми
подкаталогами. Если исходная и целевая папки лежат на одном диске, то
файл можно сократить до одной команды
for /d /r %%d in (*.*) do mkdir "\test%%~pd"
А вообще-то, как совершенно справедливо учил нас Анатолий (i_chay),
наберите команду for /? >for.txt и проштудируйте тамошние пояснения,
там правда много всего полезного можно почерпнуть.
А для отладки можно использовать оператор echo, например так
for /r %%d in (*.*) do @echo %%d >>/music/0.txt
Тогда можно посмотреть, что собственно содержит переменная бат-файла
или её модификатор.
--
С наилучшими пожеланиями
Владимир Лукьянов, Москва