Ejecute una serie de comandos para cada archivo en un directorio

Ejecute una serie de comandos para cada archivo en un directorio

Para agregar subtítulos a un solo archivo utilizo el siguiente comando:

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

Dónde:

movie01.mkves el nombre de un archivo de video

movie01.srtes el nombre de un archivo de subtítulos (siempre es el mismo que el archivo de video)

g:\movie01.mkves el archivo de salida

¿Cómo ejecuto el comando mencionado anteriormente para cada archivo en un directorio?

Respuesta1

Este comando recorrerá todos los archivos mkv y ejecutará el comando para cada uno de ellos (sugiero ponerlo en un .batarchivo). El comando debe ejecutarse en el directorio que contiene sus archivos 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"
)

%%Aes igual al nombre exacto del archivo.

%%~nAes igual al nombre del archivo sin tipo de archivo.

Respuesta2

Siempre que todos los archivos tengan la extensión .mkv, ¿qué tal esto?

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

%%videoes la variable que identifica cada archivo en la carpeta actual con la extensión especificada. Después de doejecutar el comando en cada archivo, uso la misma variable para llamar al archivo srt.

información relacionada