感谢管理员!MKVToolnix如何最快速一次性批量生成多个MKV?
本帖最后由 c_mang1 于 2016-1-17 12:44 编辑已知mmg.exe能直接封装手里的AVI文件。但现有的AVI文件达几百个,若一个一个地完成显然是不可取的,有什么办法一个性处理呢?
还有:追加文件合并一次只能添加一个吗?
期待高手给出方案。
先谢了! 批量追加的话,可选中全部文件直接拖入。
大批量封装AVI到MKV的话,请百度一下:mkvtoolnix 批量 IsaacZ 发表于 2016-1-3 20:04
批量追加的话,可选中全部文件直接拖入。
大批量封装AVI到MKV的话,请百度一下:mkvtoolnix 批量
首先向猫版致敬!
百度“mkvtoolnix 批量”以后,认真看了三天,已经领悟到批处理可以解决,但三则说得比较详尽的帖子却与我的问题不贴近。只有“怎样用MKVtoolnix批量转换avi为mkv”的提问几乎一致http://zhidao.baidu.com/question/105271490.html,然而偏偏没有准确应答。
想运用好批处理,绝非几天时间就能做到。因此恳请版主,劳驾写一个批处理文件,感激不尽!
附上必要信息:
1,程序所在路径"D:\影音及光盘\mkv专题\MKVToolnix 5.8.0 绿色多语版\mkvtoolnix\mkvtoolnix\mmg.exe"
2,原文件所在光驱"I:\\001.AVI~800.AVI",共800首
3,准备存放MKV的路径:"H:\\800首\\001.mkv……"
谢谢!!!
本帖最后由 c_mang1 于 2016-1-15 10:59 编辑
敬请管理员指教,我写的批处理怎样改正?
参考了这个帖子:http://zhidao.baidu.com/question/424192544.html,
它的核心问题是“单文件的命令行,怎么改成当前目录所有MKV 文件批量提取”,而我需要解决的是“单文件的命令行,怎么改成当前目录所有avi文件批量封装为MKV”,觉得有共通之处,而且我的问题似乎比它简单。
于是进行了下面的步骤:
一、复制成功封装AVI-MKV的参数
"mkvmerge" -o
"H:\\800首\\001.mkv""--forced-track" "0:no" "--forced-track" "1:no" "-a" "1" "-d" "0" "-S" "-T" "--no-global-tags" "--no-chapters" "(" "I:\\001.AVI" ")" "--track-order" "0:0,0:1"
二、仿照参考帖,写下:
@echo offpushd H:\800首
for /f "tokens=*" %%i in ('dir/b *.mkv') do call :merge ”%%~ni.avi" "%%i"goto :eof:merge
"D:\影音及光盘\mkv专题\MKVToolnix 5.8.0 绿色多语版\mkvtoolnix\mkvtoolnix\mkvmerge.exe" -o
"H:\\800首\\%1""--forced-track" "0:no" "--forced-track" "1:no" "-a" "1" "-d" "0" "-S" "-T" "--no-global-tags" "--no-chapters" "(" "I:\\\%2" ")" "--track-order" "0:0,0:1"
三、保存为bat文件,双击后一闪而过。
错误在哪里呢?恳求指教。
不胜感激! c_mang1 发表于 2016-1-15 10:53
敬请管理员指教,我写的批处理怎样改正?
参考了这个帖子:http://zhidao.baidu.com/question/424192544.h ...
尝试将相关程序和视频文件放置于英文目录下,尽量简化目录和文件名称,尽量使用英文名称。
还可以尝试使用英文原版程序。 IsaacZ 发表于 2016-1-15 15:03
尝试将相关程序和视频文件放置于英文目录下,尽量简化目录和文件名称,尽量使用英文名称。
还可以尝试 ...
遵嘱特别安装了MKVToolnix6版本,并修改了对应路径:
@echo offpushd H:\800
for /f "tokens=*" %%i in ('dir/b *.mkv') do call :merge ”%%~ni.avi" "%%i"goto :eof:merge
"C:\Program Files\MKVToolNix\mkvmerge.exe" -o
"H:\\800\\%1""--forced-track" "0:no" "--forced-track" "1:no" "-a" "1" "-d" "0" "-S" "-T" "--no-global-tags" "--no-chapters" "(" "I:\\%2" ")" "--track-order" "0:0,0:1"
双击运行仍然是一闪而过。
继续等待指教,让您费心了,感谢!
因为论坛编辑器的原因,拷贝过来的内容,相邻行可能会粘到一起,中间请多加个换行。
你的错误可能在于文件扩展名弄反了:avi 是来源,应该放在前面,mkv 是目标,应该放在后面。下面这个你再试试:
@echo off
pushd H:\800
for /f "tokens=*" %%i in ('dir/b *.avi') do call :merge ”%%~ni.mkv" "%%i"
goto :eof
:merge
"C:\Program Files\MKVToolNix\mkvmerge.exe" -o "H:\\800\\%1""--forced-track" "0:no" "--forced-track" "1:no" "-a" "1" "-d" "0" "-S" "-T" "--no-global-tags" "--no-chapters" "(" "I:\\%2" ")" "--track-order" "0:0,0:1"
IsaacZ 发表于 2016-1-15 22:30
因为论坛编辑器的原因,拷贝过来的内容,相邻行可能会粘到一起,中间请多加个换行。
你的错误可能在于文件 ...
先向管理员道辛苦!
我把bat修改为
@echo offpushd H:\800
for /f "tokens=*" %%i in ('dir/b *.avi') do call :merge "%%~ni.mkv" "%%i" goto :eof:merge
"C:\Program Files\MKVToolNix\mkvmerge.exe" -o "H:\\800\\%1""--forced-track" "0:no" "--forced-track" "1:no" "-a" "1" "-d" "0" "-S" "-T" "--no-global-tags" "--no-chapters" "(" "I:\\%2" ")" "--track-order" "0:0,0:1"
结果还是一闪而过。头都晕了……
因为你粘贴的命令行均出现上下行粘合的情况,请上传你的BAT文件。 通过实测,找到问题了:
for /f "tokens=*" %%i in ('dir/b *.avi') do call :merge ”%%~ni.mkv" "%%i"
红字处应该是半角引号。
修改后应该可以了,我在自己机器上测试成功。
如果你想监测封装过程的代码运行情况,可以去掉第一行。
如果你想输出到另一个文件夹,可以在 %1 前加上用于输出的新路径,比如 D:\999,否则只需要在 pushd 后一次性定义工作文件夹,新老文件都在里面。
修改后的代码:
@echo off
:上面第一行非必要,如果你想监测封装过程的代码运行情况,可以去掉
pushd H:\800
for /f "tokens=*" %%i in ('dir/b *.avi') do call :merge "%%~ni.mkv" "%%i"
:注:"%%~ni.mkv"是输出文件名,"%%i"是输入文件名。
PAUSE
:加一行PAUSE,执行完后,命令窗口暂停不退出,以便检验批处理命令的执行结果。
goto :eof
:merge
"C:\Program Files\MKVToolNix\mkvmerge.exe" -o "%1""--forced-track" "0:no" "--forced-track" "1:no" "-a" "1" "-d" "0" "-S" "-T" "--no-global-tags" "--no-chapters" "(" "%2" ")" "--track-order" "0:0,0:1"