Как сохранить файл в текущем месте во время рекурсии FOR - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть пакетный скрипт для рекурсивного запуска ffmpeg для файлов. В настоящее время сценарий сохраняет все новые файлы во вновь созданном каталоге с именем Output. Вместо этого я хотел бы сохранить новые файлы в том же месте, что и исходные файлы. Я думал, что буду использовать переменную окружения, показывающую текущий каталог, к которому обращаются во время рекурсии, но я не могу его найти.

SET /P i=Enter the file extension
md output
For /R %%a IN (*.%i%) DO ffmpeg -i "%%a" -c:v libx264 -crf 10 -pix_fmt yuv420p "output/%%~na.mp4"

Скрипт работает нормально, сохраняя файл с тем же именем файла с новым расширением, нопомещает файл в новую папку «output». Я попытался установить новую переменную с% cd% в цикле FOR, но это не сработало.

1 Ответ

1 голос
/ 30 сентября 2019
... "%%~dpna.mp4"

должен сделать это.

Обратите внимание, что в мире Windows \ является разделителем каталогов, а / является индикатором-переключателем. Windows часто, но не всегда, делает перевод. Лучше всего использовать правильную форму.

Модифицируемые метаданные описаны в for /? из приглашения. Они d для drive, p для path, n для name и x для расширения. z даст вам размер , s короткое имя , t метка даты , a атрибут и fвыдаст полное имя файла в определенных пределах). Обратите внимание, что path будет содержать как ведущий, так и конечный \, но не \\.

...