[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 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楼。

首先,你要单独echo 你的长句子到一个文本,对比看是否吻合,防止特殊字符引起的问题,然后套入你下面写的语句里,兴许就可以用了

这样的句子,也可以用excel来做
目的,学习批处理

TOP

回复 2# hlzj88
未能领会“单独echo 你的长句子到一个文本,对比看是否吻合”这句话的意思。
能否赐教一个实例?

TOP

本帖最后由 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,,,不知对否。
目的,学习批处理

TOP

回复 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,得其帮助从哈佛下载到珍贵的资料,由此切身感受到批处理的神奇之处,借此再向他表达敬意!

TOP

再请教,这样写的批处理为什么只一闪而过,不能运行?

把你的代码保存为 C:\test.bat
打开一个命令行窗口并执行 C:\test.bat
把报错信息发出来看看
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

2,还有,从mkvmerge复制的命令行有什么作用?

这个跟批处理没有关系,全都是 mkvmerge 本身的参数,具体什么意思需要查看它自己的手册。
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

namejm,,还有坛子里的其他高手,羡慕的紧,只是自己没有一点代码方面的知识,学来也只是门外汉。

不知上面的代码可用否, 再,你附上第二个,什么意思,,
目的,学习批处理

TOP

回复 7# gawk
谢谢!
也正是想到mkvmerge是开源软件,不同于其他收费软件那样封闭,或许通过写批处理能解决这个问题。
不知这个想法对不对?

TOP

他代码的错  此时不应有  "--track-order"
目的,学习批处理

TOP

回复 9# c_mang


    bat调用mkvmerge的这个想法可以行得通
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

回复 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
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

回复 12# gawk
我以为我上面已经解决了他的问题,,只需把echo %xx% "(" "I:\\[!n:~1!].AVI" ")" %yy%>>3.txt两端的echo  与 >>3.txt 去掉,即可。也不知他测试结果咋样
目的,学习批处理

TOP

回复 12# gawk
感谢!
文件不存在,如何改?

TOP

请执行4楼的代码,把代码生成的3.txt压缩之后传上来看看。
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

返回列表