Windows 10下批量合并不同文件名视频轨道的Batch脚本问题
Windows 10下批量按顺序配对合并MKV轨道的Batch脚本
针对你需要按顺序配对两个目录中MKV文件、合并不同轨道的需求,这里提供修改后的Batch脚本,替代原有的同名匹配逻辑:
@echo off setlocal enabledelayedexpansion :: 创建输出目录(不存在则新建) if not exist "joined" mkdir "joined" :: 初始化计数器 set "count=0" :: 将目录1的所有MKV文件名存入变量数组 for /f "delims=" %%f in ('dir /b /a-d "1\*.mkv"') do ( set /a count+=1 set "file1[!count!]=%%f" ) :: 将目录2的所有MKV文件名存入变量数组 set "count=0" for /f "delims=" %%f in ('dir /b /a-d "2\*.mkv"') do ( set /a count+=1 set "file2[!count!]=%%f" ) :: 按索引配对文件并执行合并 for /l %%i in (1,1,!count!) do ( set "src1=!file1[%%i]!" set "src2=!file2[%%i]!" echo 正在合并:1\!src1! + 2\!src2! -> joined\!src1! mkvmerge --output "joined\!src1!" ^ --no-audio --no-subtitles "1\!src1!" ^ --no-video --no-chapters --no-global-tags --no-attachments "2\!src2!" ) endlocal echo 所有文件合并完成!
关键说明
- 延迟扩展启用:通过
enabledelayedexpansion实现循环中变量的动态赋值与读取,确保数组变量能正确存储和调用文件名 - 文件名数组存储:用两个变量数组分别存储两个目录的文件名,通过计数器索引实现顺序配对
- 排序一致性:
dir /b /a-d命令会按系统默认的文件名排序规则输出文件列表,确保两个目录的文件顺序对应 - 输出逻辑:合并后的文件直接沿用目录1的文件名,存入
joined目录
注意事项
- 确保
mkvmerge已添加到系统环境变量,若未添加需在脚本中指定完整路径(如"D:\Tools\mkvmerge.exe") - 需保证两个目录的MKV文件数量完全一致,否则会出现部分文件无法配对的情况
- 若需要调整排序规则,可修改
dir命令的参数(如添加/o:n强制按名称排序)
内容的提问来源于stack exchange,提问作者Enrico
相关产品推荐
相关产品推荐

