Применить пакет MediaInfo для нескольких файлов
Я часто использую следующую команду:
MediaInfo.exe "--Output=Text;%ID%: %Format%$if(%Language/String%, SUBTiTLE: .............. %Language/String%)\r\n" File.mkv
Это выведет потоки субтитров из видео в формате:
5: UTF-8
6: VobSub SUBTiTLE: .............. French
7: VobSub SUBTiTLE: .............. English
8: VobSub SUBTiTLE: .............. French
Источник: Получить список субтитров, используя mediainfo в Windows
Однако я хотел бы запустить одну и ту же команду для всех файлов в папке.
я пытался
for %%a in (%*) do (
MediaInfo.exe "--Output=Text;%ID%: %Format%$if(%Language/String%, SUBTiTLE: .............. %Language/String%)\r\n"
)
но это не похоже на работу, и я не уверен, почему.
1 ответ
В вашем тестовом коде я не вижу "%%a" (имя файла для использования) в вызове MediaInfo, а также не вижу экранированного "%" ("%%") в параметрах MediaInfo (без экранирования в процентах), MediaInfo получает пустые строки из-за "%", преобразованного пакетным процессором).
Я успешно сделал то, что вы пытаетесь сделать с:
>dir test
06/09/2017 14:02 2 869 248 MOV001 - Copy.MOD
06/09/2017 14:02 2 869 248 MOV001.MOD
>more a.bat
@echo off
for %%f in (%*) do (
MediaInfo.exe "--Output=General;%%FileName%%, %%Format%%" "%%f"
)
>MediaInfo.exe "--Output=General;%FileName%, %Format%\r\n" test\*
MOV001 - Copy, MPEG-PS
MOV001, MPEG-PS
a.bat test\*.*
MOV001 - Copy, MPEG-PS
MOV001, MPEG-PS