找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 138255|回复: 46

[其他] mkvtoolnix如何批量将avi文件封装为mkv格式?

[复制链接]
发表于 2016-1-7 23:20:48 | 显示全部楼层 |阅读模式
本帖最后由 c_mang 于 2016-1-9 07:39 编辑

求助高手解决视频封装的批处理文件。
一、已知,MKVToolnix 5.8.0 绿色多语版的mmg.exe可以将"I:\\001.AVI"快速封装MKV并保存在"H:\\800首\\001.mkv"。但由于"I:\\"含001.AVI~801.AVI共800个文件,手动一个一个地加入、封装、保存,实在太累。想到批处理应当能解决,可又不知道该怎么写,因此烦劳高手大驾援手。
感激不尽!先行谢过!

二、本次需要封装的800个avi文件原压制在一张非卖品的4.7G的光盘中。不知什么原因,在电脑中打开它每个文件都显示大小为1.99G,不要说全部导出得准备2T的硬盘,还有耗用的时间更无法计算,作为遗留问题我将它制作成镜像文件。近来发现mkvtoolnix能直接添加虚拟光驱中的影音文件并成功封装另存,更为重要的它几乎还原了应有的大小。
    截图在5楼。

三、附上从mkvmerge复制的命令行(002.avi-002.mkv)如下:
"mkvmerge" -o "H:\\800首\\002.mkv"  "--forced-track" "0:no" "--forced-track" "1:no" "-a" "1" "-d" "0" "-S" "-T" "--no-global-tags" "--no-chapters" "(" "I:\\002.AVI" ")" "--track-order" "0:0,0:1"
      附上从mkvmerge复制的命令行(002.avi-002.mkv)如下:
"mkvmerge" -o "H:\\800首\\002.mkv"  "--forced-track" "0:no" "--forced-track" "1:no" "-a" "1" "-d" "0" "-S" "-T" "--no-global-tags" "--no-chapters" "(" "I:\\002.AVI" ")" "--track-order" "0:0,0:1"


四、这样写的批处理为什么只一闪而过,不能运行?
@echo off&setlocal enabledelayedexpansion

for /l %%i in (1,1,800) do (set /a n=1000+%%i

"D:\影音及光盘\mkv专题\MKVToolnix 5.8.0 绿色多语版\mkvtoolnix\mkvtoolnix\mmg.exe" -o "H:\\800首\\[!n:~1!].mkv"--forced-track" "0:no" "--default-track" "1:yes" "--forced-track" "1:no" "--display-dimensions" "1:320x240" "-a" "0" "-d" "1" "-S" "-T" "--no-global-tags" "--no-chapters" "(" "I:\\[!n:~1!].AVI" ")" "--track-order" "0:0,0:1,1:0"

)

pause

五、记得三年前在读书论坛幸遇批处理的大佬namejm,得其帮助一个批处理就从哈佛下载到珍贵的资料,由此切身感受到批处理的神奇之处,借此再向他表达敬意!
    为了加快本题的结案,特将800首AVI(近4.7G)的镜像文件分卷压缩3个包上传百度盘,供高手测试,期待精彩的批处理文件。
    下载链接在24楼。
发表于 2016-1-8 10:38:49 | 显示全部楼层
首先,你要单独echo 你的长句子到一个文本,对比看是否吻合,防止特殊字符引起的问题,然后套入你下面写的语句里,兴许就可以用了

这样的句子,也可以用excel来做
 楼主| 发表于 2016-1-8 11:11:47 | 显示全部楼层
回复 2# hlzj88
未能领会“单独echo 你的长句子到一个文本,对比看是否吻合”这句话的意思。
能否赐教一个实例?
发表于 2016-1-8 15:40:04 | 显示全部楼层
本帖最后由 hlzj88 于 2016-1-8 15:45 编辑

你的1 2 问不懂。。仅就第三问,按你的代码直接运行会报错。
  1. @echo off&setlocal enabledelayedexpansion
  2. set xx="D:\影音及光盘\mkv专题\MKVToolnix 5.8.0 绿色多语版\mkvtoolnix\mkvtoolnix\mmg.exe" -o "H:\\800首\\[!n:~1!].mkv"--forced-track" "0:no" "--default-track" "1:yes" "--forced-track" "1:no" "--display-dimensions" "1:320x240" "-a" "0" "-d" "1" "-S" "-T" "--no-global-tags" "--no-chapters"
  3. set yy="--track-order" "0:0,0:1,1:0"
  4. for /l %%i in (1,1,800) do (set /a n=1000+%%i
  5. echo %xx% "(" "I:\\[!n:~1!].AVI" ")" %yy%>>3.txt
  6. )
  7. pause
复制代码
且 你的路径I:\\001.avi,和平时的i:\001.avi不同,,也许是你软件的用法。另你最后的I:\\[!n:~1!].AVI,,,不知对否。
 楼主| 发表于 2016-1-8 20:26:17 | 显示全部楼层
回复 4# hlzj88
谢谢关注!
一、关于“路径I:\\001.avi,和平时的i:\001.avi不同”的说明。
    本次需要封装的800个avi文件原压制在一张非卖品的4.7G的光盘中。不知什么原因,在电脑中打开它每个文件都显示大小为1.99G,不要说全部导出得准备2T的硬盘,还有耗用的时间更无法计算,作为遗留问题我将它制作成镜像文件。近来发现mkvtoolnix能直接添加虚拟光驱中的影音文件并成功封装另存,更为重要的它几乎还原了应有的大小。

    因此“路径I:\\001.avi”是虚拟光驱的盘符路径。

二、再附上从mkvmerge复制的命令行(002.avi-002.mkv)如下:
"mkvmerge" -o "H:\\800首\\002.mkv"  "--forced-track" "0:no" "--forced-track" "1:no" "-a" "1" "-d" "0" "-S" "-T" "--no-global-tags" "--no-chapters" "(" "I:\\002.AVI" ")" "--track-order" "0:0,0:1"

三、几年前在读书论坛幸遇批处理的大佬namejm,得其帮助从哈佛下载到珍贵的资料,由此切身感受到批处理的神奇之处,借此再向他表达敬意!
发表于 2016-1-8 20:45:16 | 显示全部楼层
再请教,这样写的批处理为什么只一闪而过,不能运行?

把你的代码保存为 C:\test.bat
打开一个命令行窗口并执行 C:\test.bat
把报错信息发出来看看
发表于 2016-1-8 20:47:13 | 显示全部楼层
2,还有,从mkvmerge复制的命令行有什么作用?

这个跟批处理没有关系,全都是 mkvmerge 本身的参数,具体什么意思需要查看它自己的手册。
发表于 2016-1-8 20:48:44 | 显示全部楼层
namejm,,还有坛子里的其他高手,羡慕的紧,只是自己没有一点代码方面的知识,学来也只是门外汉。

不知上面的代码可用否, 再,你附上第二个,什么意思,,
 楼主| 发表于 2016-1-8 20:55:42 | 显示全部楼层
回复 7# gawk
谢谢!
也正是想到mkvmerge是开源软件,不同于其他收费软件那样封闭,或许通过写批处理能解决这个问题。
不知这个想法对不对?
发表于 2016-1-8 21:07:02 | 显示全部楼层
他代码的错  此时不应有  "--track-order"
发表于 2016-1-8 21:13:12 | 显示全部楼层
回复 9# c_mang


    bat调用mkvmerge的这个想法可以行得通
发表于 2016-1-8 21:15:21 | 显示全部楼层
回复 10# hlzj88


我没有环境,无法测试。转义试试吧。

@echo off&setlocal enabledelayedexpansion

for /l %%i in (1,1,800) do (set /a n=1000+%%i

"D:\影音及光盘\mkv专题\MKVToolnix 5.8.0 绿色多语版\mkvtoolnix\mkvtoolnix\mmg.exe" -o "H:\\800首\\[!n:~1!].mkv"--forced-track" "0:no" "--default-track" "1:yes" "--forced-track" "1:no" "--display-dimensions" "1:320x240" "-a" "0" "-d" "1" "-S" "-T" "--no-global-tags" "--no-chapters" "^(" "I:\\[!n:~1!].AVI" "^)" "--track-order" "0:0,0:1,1:0"

)

pause
发表于 2016-1-8 21:20:12 | 显示全部楼层
回复 12# gawk
我以为我上面已经解决了他的问题,,只需把echo %xx% "(" "I:\\[!n:~1!].AVI" ")" %yy%>>3.txt两端的echo  与 >>3.txt 去掉,即可。也不知他测试结果咋样
 楼主| 发表于 2016-1-8 21:43:07 | 显示全部楼层
回复 12# gawk
感谢!
文件不存在,如何改?
发表于 2016-1-8 21:48:24 | 显示全部楼层
请执行4楼的代码,把代码生成的3.txt压缩之后传上来看看。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 03:25 , Processed in 0.020765 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表