Faço minha pergunta em forma de exemplo... Tenho uma pasta contendo diversas subpastas que são as seguintes Pasta principal==)Got, Vikings, etc. Em cada uma há vídeos com seus arquivos srt correspondentes. No ambiente Windows, executar este comando na pasta principal faz com que mkvmerge faça o mix de vídeos inteiros e arquivos srt correspondentes neste diretório.
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
Responder1
O código contém alguns erros mas entendi da seguinte forma: 1
Execute o seguinte em todos
*.mkv
e*.mp4
encontre recursivamente:
- Execute
mkvmerge
em cada arquivo e seu arquivo*.srt
.- Se tiver êxito (aviso ou saída limpa):
- Exclua os arquivos de entrada.
- Renomeie o arquivo criado para
<original_name>.mkv
.
Isso pode ser feito usando o seguinte script no Ubuntu.
Use-o por sua conta e risco, ainda não testei totalmente!
#!/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 executar este script, você precisa instalar omkvmerge
programa para Ubuntu:
sudo apt install mkvtoolnix
1 Deixei de fora as mensagens de erro para simplificar. Conforme comentários, eles não parecem ser essenciais para o roteiro.