Aplicar lote do MediaInfo para vários arquivos

1

Eu freqüentemente uso o seguinte comando:

MediaInfo.exe "--Output=Text;%ID%: %Format%$if(%Language/String%, SUBTiTLE: .............. %Language/String%)\r\n" File.mkv

Isso gerará os streams de legenda de um vídeo vil no formato:

5: UTF-8
6: VobSub SUBTiTLE: .............. French
7: VobSub SUBTiTLE: .............. English
8: VobSub SUBTiTLE: .............. French

Fonte: Obter lista de legendas usando mediainfo no Windows

No entanto, gostaria de executar o mesmo comando para todos os arquivos em uma pasta.

Eu tentei

for %%a in (%*) do  (
MediaInfo.exe "--Output=Text;%ID%: %Format%$if(%Language/String%, SUBTiTLE: .............. %Language/String%)\r\n"
)

mas parece que não funciona e não sei porquê.

    
por Arete 06.09.2017 / 17:39

1 resposta

0

Em seu código de teste, não vejo "%% a" (o nome do arquivo a ser usado) na chamada do MediaInfo e também não vejo "%" escaped ("%%") nos parâmetros do MediaInfo ( sem porcentagem de escape, o MediaInfo recebe strings vazias devido a "%" convertido pelo processador em lote).

Eu fiz o que você tenta fazer com sucesso:

>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
    
por 06.09.2017 / 17:59