【发布时间】:2021-02-16 22:55:26
【问题描述】:
我正在创建一个 Windows 批处理文件来查找文件夹中的所有 mkv 文件,检查它是否有多个音轨和字幕。如果是这样,请删除除 ENG 和 UND 之外的所有字幕和所有音轨。但是,当我运行批处理文件时它崩溃了?我不知道为什么它开始这样做。加上变量之前没有设置。干净总是假的。请帮忙。
@echo on
setlocal ENABLEDELAYEDEXPANSION
set rootfolder="C:\Users\User\Desktop\mov"
set "clean=false"
echo Enumerating all MKVs under %rootfolder%
for /r %rootfolder% %%a in (*.mkv) do (
for /f %%s in ('mkvmerge -i "%%a" ^| find /c /i "subtitles"') do (
if NOT [%%s]==[0] (
set "clean=true"
)
)
for /f %%b in ('mkvmerge -i "%%a" ^| find /c /i "audio"') do (
if [%%b]gtr[1] (
set "clean=true"
)
)
if %clean%=="true" (
mkvmerge -o "%%~dpna (clean)%%~xa" -a und,eng -s und,eng --no-subtitles "%%a"
)
)
echo Done
pause
【问题讨论】:
-
请不要在帖子中使用标签,因为这会使遵循格式变得更加困难。我相信我已经修好了。无关结论:最后的
)是多余的。 -
抱歉格式化。我已经删除了最后一个)。批处理文件仍然崩溃。我添加了一个暂停,发现它在第一个 for 循环时崩溃了。
标签: batch-file subtitle audiotrack mkv