[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]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楼。

回复 44# hlzj88
鸣谢!详楼上。

TOP

回复 45# gawk
回复gawk、hlzj88二君:对于你们在本帖中给予的帮助,深表谢意!
1,关于调用MKVToolnix批处理800个AVI封装为MKV的实际运用,已经得到另一位高手(不在本坛子)的指导顺利完成,全部耗时不到20分钟。由于革除了每个文件1.99G的冗余,因此镜像文件的4.37G总大小封装后仅为4.14G。不过他给出的批处理是另一种语句表述,所以就本题来说并没有彻底解决。
2,我想继续搞清楚的是,像
@echo off&setlocal enabledelayedexpansion
for /l %%i in (1,1,800) do (set /a n=1000+%%i
这样的句式究竟能不能锁定“来源文件夹 I:\ 是个虚拟光盘路径”并读取?
搜索过本坛,只有谈论光驱而没有涉及虚拟光盘的话题。
尝试添加pushd I:\ 没有成功。
如下:
@echo off&setlocal enabledelayedexpansion
pushd I:\  
for /l %%i in (1,1,800) do (set /a n=1000+%%i

TOP

回复 42# c_mang


    把 subst.bat 重命名为 test.bat
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

回复 43# c_mang
同理,前期按你的软件能用的语句已能生成批量语句,但你的不能找到文件,也许和虚拟光驱有关系,但这些已经超出批处理的范畴,超出的部分,也不是我的强项。算是无能为力了。
目的,学习批处理

TOP

回复 38# gawk
请教:
如42楼截图,自21:00至凌晨1点,
cmd.exe运行subst w: i:\
始终处于快速上翻的显示。
其间多次查看盘符和硬盘,都没有看出变化。I:\镜像文件(800首avi)大小不过4.37G,看来只好关闭,该休息了。
附:
操作系统:Win7专业版32位。
硬盘:2T

能否指点原因吗?
多谢了!静候。

TOP

回复 41# gawk

谢谢朋友提醒,一定注意细节。
再请关注,subst.bat原来存放在C:盘,没有运行成功。但移动到D:文件夹里保存时,却发现可以运行,时间已过去半小时,仍然在跳转,不知结果是怎样?
主要没有看见001.avi;002.avi……等显示。

TOP

测试过subst 命令,一闪而过

在CMD窗口单独执行subst命令可以看到报错信息。以后不要再说“一闪而过”这种词了,对于别人帮助你解决问题来说没有任何意义。
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

回复 39# c_mang


    删掉 where "drivetype=5" 试试
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

回复 38# gawk
一、测试过subst 命令,一闪而过。原因不明。
二、又参考:判断光驱盘符(路径)
@echo off
for /f "skip=1" %%a in ('wmic logicaldisk where "drivetype=5" get DeviceID') do echo
%%a>>1.txt
说明:将光驱盘符显示出来,并把结果保存到当前盘的“1.txt”文本中。
——结果:“1.txt”文本为空。

TOP

回复 37# c_mang


    我没有这样的环境,无法做测试。你试试 subst 命令是否可以把虚拟盘符映射到本地。
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

回复 21# gawk
请继续帮助——
经过反复思考,你和hlzj88的努力通常已能解决问题。但此题似乎有点特殊(见5楼的截图和说明),由于输入文件是加载在虚拟光驱的I:盘符里,或许这就是运行bat找不到文件和路径的原因所在。
如果问题就出在这儿,那么需要补充什么指令才能让bat读取虚拟光驱里的文件?
有劳了二位,感激!

TOP

回复 35# hlzj88
见23楼截图,应用软件窗口弹出,仍旧是“文件"-o"不存在”的提示。

TOP

没有调用 那软件吗
目的,学习批处理

TOP

回复 33# hlzj88
在"C:\Windows\System32\3.txt"找到,
改3.bat运行的结果如23楼截图,内容是:
C:\Windows\system32>"D:\影音及光盘\mkv专题\MKVToolnix 5.8.0 绿色多语版\mkvtoolni
x\mkvtoolnix\mmg.exe" -o "H:\\800首\\[~1no" "--default-track" "1:yes" "--forced-
track" "1:no" "--display-dimensions" "1:320x240" "-a" "0" "-d" "1" "-S" "-T" "--
no-global-tags" "--no-chapters" "(" "I:\\[001].AVI" ")" "--track-order" "0:0,0:1
,1:0"

TOP

返回列表