Hago mi pregunta en forma de ejemplo… Tengo una carpeta que contiene varias subcarpetas que son las siguientes Carpeta principal==)Got, Vikings, etc. En cada una hay videos con sus correspondientes archivos srt. En el entorno de Windows, ejecutar este comando en la carpeta principal hace que mkvmerge mezcle videos completos y los archivos srt correspondientes en este directorio.
For /R %%A IN (*.mkv *.mp4) Do (
"C:/Program Files/MKVToolNix\mkvmerge.exe" -o "%%~dpnxAtemp" "%%~fA" "%%~dpnA.srt" && if errorlevel 2 (
echo errors generated during remuxing, original file not deleted
) else if errorlevel 1 (
del /f "%%~fA" "%%~dpnA.srt" echo Warnings generated during remuxing to "%%~A", original file deleted
) else (
del /f "%%~fA" "%%~dpnA.srt" echo Successfully remuxed to "%%~A", original file deleted
) && for /R %%A IN (*.mkvtemp *.mp4temp) do ren "%%~fA" "%**.mkv"
)
Pause
Respuesta1
El código contiene algunos errores pero lo entiendo de la siguiente manera: 1
Ejecute lo siguiente en todos
*.mkv
y*.mp4
lo encontrará de forma recursiva:
- Ejecutar
mkvmerge
sobre cada archivo y su correspondiente*.srt
.- Si tuvo éxito (advertencia o salida limpia):
- Elimine los archivos de entrada.
- Cambie el nombre del archivo creado a
<original_name>.mkv
.
Esto se podría hacer usando el siguiente script en Ubuntu.
Úselo bajo su propio riesgo, ¡no lo he probado completamente!
#!/bin/bash
find . -name \*.mp4 -o -name \*.mkv | while read orig_filename
do
filename="${orig_filename::-4}" # crop the extension
mkvmerge -o "$orig_filename.tmp" "$orig_filename" "$filename.srt"
if [ $? -le 1 ] # warning or clean exit
then
rm "$orig_filename" "$filename.srt"
mv "$orig_filename.tmp" "$filename.mkv"
fi
done
Antes de ejecutar este script, necesita instalar elmkvmerge
programa para ubuntu:
sudo apt install mkvtoolnix
1 He omitido los mensajes de error por simplicidad. Según los comentarios, no parecen esenciales para el guión.