MKVtoolnix使用.bat批量处理文件,连续剧批量修改默认音轨、音轨属性和字幕顺序
工具和版本
windows10 x64
MkvToolNix v67.0.0
待输出的Mkv格式文件,要求是同类型的文件,比如从迅雷下载下来同一来源的连续剧
步骤
一、添加文件
打开MkvToolNix GUI,添加输入文件,选中一个待输出的文件A
二、编辑音轨
选中音轨,修改语言和默认音轨标记
三、复制代码
混流器-显示命令行,复制命令行信息。没试过不转义的代码能不能在cmd中运行,我是直接用windows的
四、参数化
1.创建文本文件
2.FOR 参数 %%变量名(a) IN (相关文件或命令) DO 执行的命令
3./L 表示迭代数值范围 ,使用迭代变量设置起始值 (Start#),
然后逐步执行一组范围的值,直到该值超过所设置的终止值 (End#)。
/L 将通过对 Start# 与 End# 进行比较来执行迭代变量。
如果 Start# 小于 End#,就会执行该命令。
如果迭代变量超过 End#,则命令解释程序退出此循环。
还可以使用负的 Step# 以递减数值的方式逐步执行此范围内的值。例如:
(1,1,5) 生成序列 1 2 3 4 5,
而 (5,-1,1) 则生成序列 (5 4 3 2 1)。
语法是:
for /L %% Variable in (Start#,Step#,End#) do Command
例如:
for /l %%a in (1,1,9) do
保存执行看效果,他会打印从1 2 3 4 5 6 7 8 9 这样9个数字
(1,1,9)这个参数也就是表示从1开始每次加1直到9终止!
变量名设置为:%%a , 输出时:"%%a" 。如果连续剧集名1-9集为001-009集,即变量输出时设置为:%%a 、00"%%a"
6.把文本文件改名为B.bat (以下为集名001-009集时的代码) .bat批量脚本中有中文时乱码解决方法看最后。
for /l %%a in (1,1,9) do (
"D:\Program Files\视频音轨\mkvtoolnix-64-bit-67.0.0-绿色版\mkvtoolnix\mkvmerge.exe" --ui-language zh_CN --priority lower --output ^"D:\aDrive\皆大欢喜\皆大喜欢.古装版.粤国双语.720p.EP00"%%a".mkv^" --language 0:zh --display-dimensions 0:1280x720 --language 1:zh --track-name ^"1:粤语^" --default-track-flag 1:no --language 2:zh --track-name ^"2:国语^" --default-track-flag 2:yes --sub-charset 3:UTF-8 --language 3:zh --track-name ^"3:简体^" --sub-charset 4:UTF-8 --language 4:zh --track-name ^"4:繁体^" ^"^(^" ^"D:\aDrive\皆大欢喜2\皆大喜欢.古装版.国粤双语.EP00"%%a".mkv^" ^"^)^" --track-order 0:0,0:2,0:1,0:3,0:4
) pause
以下为剧集名001-009--010--099--100--327集。请按如下代码
for /l %%a in (1,1,9) do (
"D:\Program Files\视频音轨\mkvtoolnix-64-bit-67.0.0-绿色版\mkvtoolnix\mkvmerge.exe" --ui-language zh_CN --priority lower --output ^"D:\aDrive\皆大欢喜new\皆大喜欢.古装版.粤国双语.720p.EP00"%%a".mkv^" --language 0:zh --display-dimensions 0:1280x720 --language 1:zh --track-name ^"1:粤语^" --default-track-flag 1:no --language 2:zh --track-name ^"2:国语^" --default-track-flag 2:yes --sub-charset 3:UTF-8 --language 3:zh --track-name ^"3:简体^" --sub-charset 4:UTF-8 --language 4:zh --track-name ^"4:繁体^" ^"^(^" ^"D:\aDrive\皆大欢喜\皆大喜欢.古装版.国粤双语.EP00"%%a".mkv^" ^"^)^" --track-order 0:0,0:2,0:1,0:3,0:4
)
for /l %%a in (10,1,99) do (
"D:\Program Files\视频音轨\mkvtoolnix-64-bit-67.0.0-绿色版\mkvtoolnix\mkvmerge.exe" --ui-language zh_CN --priority lower --output ^"D:\aDrive\皆大欢喜new\皆大喜欢.古装版.粤国双语.720p.EP0"%%a".mkv^" --language 0:zh --display-dimensions 0:1280x720 --language 1:zh --track-name ^"1:粤语^" --default-track-flag 1:no --language 2:zh --track-name ^"2:国语^" --default-track-flag 2:yes --sub-charset 3:UTF-8 --language 3:zh --track-name ^"3:简体^" --sub-charset 4:UTF-8 --language 4:zh --track-name ^"4:繁体^" ^"^(^" ^"D:\aDrive\皆大欢喜\皆大喜欢.古装版.国粤双语.EP0"%%a".mkv^" ^"^)^" --track-order 0:0,0:2,0:1,0:3,0:4
)
for /l %%a in (100,1,327) do (
"D:\Program Files\视频音轨\mkvtoolnix-64-bit-67.0.0-绿色版\mkvtoolnix\mkvmerge.exe" --ui-language zh_CN --priority lower --output ^"D:\aDrive\皆大欢喜new\皆大喜欢.古装版.粤国双语.720p.EP"%%a".mkv^" --language 0:zh --display-dimensions 0:1280x720 --language 1:zh --track-name ^"1:粤语^" --default-track-flag 1:no --language 2:zh --track-name ^"2:国语^" --default-track-flag 2:yes --sub-charset 3:UTF-8 --language 3:zh --track-name ^"3:简体^" --sub-charset 4:UTF-8 --language 4:zh --track-name ^"4:繁体^" ^"^(^" ^"D:\aDrive\皆大欢喜\皆大喜欢.古装版.国粤双语.EP"%%a".mkv^" ^"^)^" --track-order 0:0,0:2,0:1,0:3,0:4
)
pause
五、运行
注意事项:
一、bat批量脚本中有中文时乱码请用以下步骤:
编辑批处理文件时,以ANSI方式编辑即可。若以别的方式(如UTF-8)编辑了批处理,转换成ANSI格式即可。
windows自带的记事本保存文件时即可选择编码方式。
将此脚本文件另存为
查看编码:UTF-8格式。
将编码格式选择ANSI
重新运行此脚本程序,发现汉字不再是乱码了。
注意事项二、
bat批量代码调整视频默认音轨时。需要注意原视频h.264轨道的id是否为0
如以下h.264轨道视频的id是4,先把h.264的id改为0 ( 使用MKVtoolnix较新的版本,先把视频默认转换一遍) 再执行调整音轨代码的批量bat代码。