使用MkvToolNix批量合并成对MKV视频的批处理脚本求助
批量MKV混流解决方案
准备工作
- 安装MKVToolNix,确保
mkvmerge命令已添加到系统环境变量PATH中(安装时可勾选"Add to PATH"选项)。
批处理脚本
创建一个名为merge_mkv.bat的文件,将以下代码粘贴进去,保存到存放MKV文件的文件夹中:
@echo off setlocal enabledelayedexpansion rem 创建输出目录(避免覆盖原文件) if not exist "output" mkdir "output" rem 检查mkvmerge是否可用 where mkvmerge >nul 2>&1 if errorlevel 1 ( echo 错误:未找到mkvmerge,请安装MKVToolNix并确保其在系统PATH中。 pause exit /b 1 ) rem 遍历所有MKV文件 for %%f in (*.mkv) do ( rem 获取不带扩展名的文件名 set "base=%%~nf" rem 跳过带"-数字"后缀的配对文件(避免重复处理) echo !base! | findstr /E "-[0-9][0-9]*" >nul if not errorlevel 1 ( echo 跳过配对文件:%%f goto nextfile ) rem 查找对应的配对文件(形如base-数字.mkv) set "paired_found=0" for %%p in ("!base!-*.mkv") do ( set "paired_file=%%p" set "paired_found=1" echo 正在处理:%%f 和 !paired_file! rem 执行混流命令:保留原文件除章节外的所有轨道,添加配对文件的所有字幕轨道 mkvmerge -o "output\!base!.mkv" ^ --no-chapters "%%f" ^ --only-subtitles "!paired_file!" if errorlevel 1 ( echo 处理!base!时出错 ) else ( echo 已成功合并!base!到output\!base!.mkv ) ) if !paired_found! equ 0 ( echo 未找到!base!的配对文件 ) :nextfile ) echo 批量处理完成 pause
使用说明
- 将上述脚本保存为
merge_mkv.bat,放到你的MKV文件所在文件夹。 - 双击运行该批处理文件,脚本会自动:
- 创建
output文件夹存放合并后的文件 - 跳过所有带
-数字后缀的配对文件 - 为每个基础文件(如
magic.mkv)找到对应的配对文件(如magic-1.mkv) - 执行混流操作,保留基础文件除章节外的所有轨道,仅添加配对文件的字幕轨道
- 创建
关键细节说明
--no-chapters:移除基础文件的章节轨道,保留其他所有轨道(视频、音频等)--only-subtitles:仅从配对文件中提取所有字幕轨道,忽略其他轨道- 输出文件存放在
output文件夹,不会覆盖原文件 - 脚本会自动跳过配对文件,避免重复处理
内容的提问来源于stack exchange,提问作者estevenin
相关产品推荐
相关产品推荐

