2016-12-05 8 views
0

Во-первых, я искал googled и googled, как исправить эту проблему, не повезло. Я работаю над созданием пакетного файла для повторного кодирования звука в файле в aac, если это ac-3 или ogg, используя ffmpeg. Я знаю, как сделать преобразование с помощью ffmpeg, а не как автоматизировать его, только если звук соответствует определенному кодеку. Чтобы получить аудиокодек для файла, у меня есть два разных метода: один с ffprobe, а другой с MediaInfo.Как установить вывод команды как переменную в пакете

MediaInfo --Inform="Audio;%%Format%%" "input.mkv" 

или

ffprobe -v error -select_streams a:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 "input.mkv" 

Однако мой вопрос с установкой переменной из вывода команды. Это код, который я пытался, но безрезультатно.

SETLOCAL 

for %%a in (*.mp4) do (

MediaInfo --Inform="Audio;%%Format%%" "%%a">codec.txt 

SET /p codec=<codec.txt 

DEL codec.txt 

ECHO %codec% 

) 

pause 

Очевидно, что это лишь часть моей цели, но это часть я не могу показаться, чтобы получить прошлое. Я проверил, удалив часть «DEL codec.txt», которая фактически хранит правильный вывод в текстовом файле, но не импортирует его в переменную. В любом случае, я могу настроить вывод на переменную в порядке, это именно то, что я часто нашел в моем поиске.

Любая помощь очень ценится.

+2

Возможный дубликат [команды пакетной команды для переменной окружения, заданной для цикла) (http://stackoverflow.com/questions/17598638/windows-batch-command-for-loop-set-environment-variable) –

+0

Возможный дубликат [ Batch - Assign Command output to Variable] (http://stackoverflow.com/questions/16203629/batch-assign-command-output-to-variable); также связанные: [Batch - Assign Command output с переменными переменными] (http://stackoverflow.com/questions/28663803/batch-assign-command-output-with-variables-to-variable) – aschipfl

ответ

1
for %%a in (*.mp4) do (
for /f "delims=" %%c in (
    'MediaInfo --Inform="Audio;%%Format%%" "%%a" ') do (

    echo codec is %%c 
    rem now use "%%c" as codec 
) 
rem "%%c" is now out-of-scope 
) 

Вы должны были бы искать SO для delayed expansion для объяснения того, почему codec остались без изменений в коде.

+0

Спасибо большое, это сработало с небольшой модификацией. Я должен был добавить каретку до знака равенства, поскольку он не передавал это как часть команды. – Crankrune

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

  • Нет связанных вопросов^_^