Я не уверен, что подразумевается в скобках, где у меня есть (".m2v")
.
что это представляет?
for %%a in (".m2v") do ffmpeg -i "%%~na.wav" -i "%%~na.m2v" -acodec copy -vcodec copy "newfiles\%%~na.mxf"
Значение (".m2v")
представляет собой набор файлов для обработки.
В вашей команде нет файлов для обработки, так как:
.m2v
это только расширение, и мы можем предположить, что это должно быть что-то вродеfilename.m2v
- Здесь вам действительно нужно подстановочное выражение (как это сделать см. Ниже).
- Ваши файлы находятся в подкаталогах.
Используйте следующий пакетный файл (в единственном главном каталоге):
@echo off setlocal for /f "usebackq" %%a in (`dir /b /s *.m2v`) do ( echo ffmpeg -i "%%~dpna.wav" -i "%%~dpna.m2v" -acodec copy -vcodec copy "newfiles\%%~na.mxf ) endlocal
Заметки:
Удалите
echo
изffmpeg
команды, когда вы довольны тем, что собирается делать пакетный файл.dir /b /s *.m2v
используется для создания списка файлов для обработки./b
Вариант дает только имена файлов (мы не хотим, чтобы заголовки, резюме или другие детали)/s
Опция позволяетdir
обрабатывать подкаталоги.for /f
используется для обработки списка файлов.%%~dpna
используется для получения полного имени файла без расширения.
Дальнейшее чтение
- Индекс AZ командной строки Windows CMD - Отличный справочник по всем вопросам, связанным с командной строкой Windows.
- dir - Показать список файлов и подпапок.
- for / f - Циклическая команда против результатов другой команды.
- параметры - аргумент командной строки (или параметр) - это любое значение, переданное в пакетный скрипт.