我以範例的形式提出我的問題...我有一個資料夾,其中包含幾個子資料夾,如下主資料夾==)Got、Vikings 等。文件。在 Windows 環境中,在主資料夾 make mkvmerge 中執行此指令可混合此目錄中的整個影片和對應的 srt 檔案。
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
答案1
程式碼包含一些錯誤,但我透過以下方式理解它:1
對所有物件執行以下命令
*.mkv
並*.mp4
遞歸找到:
- 在
mkvmerge
每個文件及其相應的*.srt
.- 如果成功(警告或乾淨退出):
- 刪除輸入檔。
- 將建立的檔案重新命名為
<original_name>.mkv
.
這可以在 Ubuntu 上使用以下腳本來完成。
使用它需要您自擔風險,我還沒有完全測試它!
#!/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
在運行此腳本之前,您需要安裝mkvmerge
Ubuntu 程式:
sudo apt install mkvtoolnix
1為了簡單起見,我省略了錯誤訊息。根據評論,它們似乎對於腳本來說並不是必需的。