Execute uma série de comandos para cada arquivo em um diretório

Execute uma série de comandos para cada arquivo em um diretório

Para adicionar legendas a um único arquivo eu uso o seguinte comando:

mkvmerge.exe -o g:\movie01.mkv --default-track 0 --language 0:pl movie01.mkv movie01.srt

Onde:

movie01.mkvé o nome de um arquivo de vídeo

movie01.srté o nome de um arquivo de legenda (é sempre igual ao arquivo de vídeo)

g:\movie01.mkvé o arquivo de saída

Como executo o comando mencionado acima para cada arquivo em um diretório?

Responder1

Este comando percorrerá todos os arquivos mkv e executará o comando para cada um deles (sugiro colocá-lo em um .batarquivo). O comando deve ser executado no diretório que contém seus arquivos mkv.

for %%A in (*.mkv) do if /i "%%~XA"==".mkv" ( 
    c:\<path to mkvmerge>\mkvmerge.exe -o g:\"%%A" --default-track 0 --language 0:pl "%%A" "%%~nA.srt"
)

%%Aé igual ao nome exato do arquivo.

%%~nAé igual ao nome do arquivo sem tipo de arquivo.

Responder2

Desde que todos os arquivos tenham a extensão .mkv, que tal isto:

for /r %%video in (*.mkv) do mkvmerge.exe -o %%video --default-track 0 --language 0:pl %%video.srt

%%videoé a variável que identifica cada arquivo na pasta atual com a extensão especificada. Depois de doexecutar o comando em cada arquivo, uso a mesma variável para chamar o arquivo srt.

informação relacionada