2013-02-09 3 views
4

У меня был скрипт, который преобразует все mkvs в папку в mp4s, используя ffmpeg. Недостатком является то, что он оставил расширение .mkv и просто добавил .mp4 (например: file.mkv.mkp4). Я знаю, что %~n можно использовать для получения имени без расширения, но я не могу понять, как это понять.Получение имени файла из for %% i переменной

Вот мой оригинальный сценарий:

for %%i IN (*.mkv) DO (ffmpeg -y -ss 00:00:00 -threads 6 -i "%%i" -vcodec copy -f mp4 -strict experimental -acodec aac -ab 128k -ac 2 "%%i.mp4") 

Вот что я пробовал:

for %%i IN (*.mkv) DO (ffmpeg -y -ss 00:00:00 -threads 6 -i "%~ni.mkv" -vcodec copy -f mp4 -strict experimental -acodec aac -ab 128k -ac 2 "%~ni.mp4") 

ответ

3

Процент признаки переменных цикла должны быть удвоены в пакетных сценариев, так что вы должны использовать %%~ni вместо %~ni. См. Примеры раздел в documentation.

+0

Боже мой, я чувствую себя глупо. Благодаря! – nysos3

+1

Эта ссылка мертва, правильное местоположение: technet.microsoft.com/en-us/library/bb490869.aspx – MarcusJ

+1

@MarcusJ На самом деле это technet.microsoft.com/en-us/library/bb490909.aspx, но спасибо за хедз-ап. Исправлена. –

Смежные вопросы