Dav*_*ter 5 windows subtitles batch-file matroska
我目前正在查看一个名为mkvmerge的 Windows 程序。我想创建一个批处理文件,从指定的路径递归查找所有 MKV 文件,并从找到的 MKV 文件中删除所有字幕(如果找到的 MKV 包含字幕),最后删除所有已删除字幕的原始 MKV 文件。
我已经完成了大约 2 个小时的谷歌搜索,我发现你必须能够写出这样的东西:
FOR /F "delims=*" %%A IN ('dir /b *.MKV') DO "C:\mkvmerge.exe" -o "fixed_%%A" -a 4 -s 7 --compression -1:none "%%A"
Run Code Online (Sandbox Code Playgroud)
我仍在尝试,但如果有人能给我一些帮助,我将不胜感激。
在mkvmerge.exe所在的同一目录中将以下内容另存为类似DelMKVSubs.bat的内容,根据您的要求编辑rootfolder变量并运行批处理文件:
@echo off
cls
set rootfolder=C:\
echo Enumerating all MKVs under %rootfolder%
echo.
for /r %rootfolder% %%a in (*.mkv) do (
for /f %%b in ('mkvmerge -i "%%a" ^| find /c /i "subtitles"') do (
if [%%b]==[0] (
echo "%%a" has no subtitles
) else (
echo.
echo "%%a" has subtitles
mkvmerge -q -o "%%~dpna (No Subs)%%~xa" -S "%%a"
if errorlevel 1 (
echo Warnings/errors generated during remuxing, original file not deleted
) else (
del /f "%%a"
echo Successfully remuxed to "%%~dpna (No Subs)%%~xa", original file deleted
)
echo.
)
)
)
Run Code Online (Sandbox Code Playgroud)
批处理文件应该很容易理解,但这里有一个概述:
它用于for /r递归搜索%rootfolder%所有 MKV
然后mkvmerge -i在每个 MKV 上运行以检查是否存在字幕轨道
如果 MKV 确实包含字幕轨道,它会mkvmerge -S在跳过所有此类轨道的同时运行以重新混合文件
最后它检查 mkvmerge 的退出代码,如果这个(即errorlevel)是 0 表示成功,没有警告/错误,它会删除原始文件
欲了解更多看到了mkvmerge文档也for /?,if /?在命令提示符下等。
| 归档时间: |
|
| 查看次数: |
10526 次 |
| 最近记录: |