1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
| @echo off chcp 65001 >nul setlocal enabledelayedexpansion
REM 定义 mkvmerge 可执行文件路径 set "exe=D:\software\mkvtoolnix\mkvmerge.exe"
REM 输入文件夹路径 set "input=G:\video"
REM 输出文件夹路径 set "output=G:\video\done"
REM 检查 mkvmerge 是否存在 if not exist "%exe%" ( echo "%exe%" not found goto end )
REM 检查输入文件夹是否存在 if not exist "%input%" ( echo "%input%" not found goto end )
REM 创建输出文件夹(如果不存在) md "%output%" 2>nul
REM 遍历 G:\video 下的一层子目录 for /d %%a in ("%input%\*") do ( if /i not "%%~nxa"=="done" ( call :process_directory "%%~fa" ) )
:end echo All directories processed. pause exit /b
:process_directory REM 获取当前子目录路径 set "subdir=%~1"
REM 定义输出子目录路径 set "output_subdir=%output%\!subdir:%input%\=!"
REM 创建输出子目录(如果不存在) md "!output_subdir!" 2>nul
REM 遍历当前子目录中的所有 .mkv 文件 for %%b in ("%subdir%\*.mkv") do ( call :process_file "%%b" "!output_subdir!" )
exit /b
:process_file REM 获取当前文件路径和输出目录 set "input_file=%~1" set "output_dir=%~2"
REM 修改输出文件名,在原文件名后添加“粤语” for %%c in ("%input_file%") do ( set "output_file=%output_dir%\%%~nc-粤语%%~xc" )
REM 使用 mkvmerge 保留粤语声轨(音频轨 2) echo Processing "!input_file!" echo Output will be saved to "!output_file!" "%exe%" -o "!output_file!" --audio-tracks 2 --default-track-flag 2:yes "!input_file!"
REM 处理完成提示 if !errorlevel! equ 0 ( echo Successfully processed: "!input_file!" ) else ( echo Failed to process: "!input_file!" )
exit /b
|