这可能是一个简单的问题。
我尝试更改此脚本,因此输出文件扩展名为.mkv,但我不知道要更改的内容。
经过多次测试,你可能会知道答案。
@echo off
cls
set rootfolder="D:\My Videos\test"
echo Enumerating all MKVs under %rootfolder% and its subfolders.
echo.
for /r %rootfolder% %%a in (*.mkv, *.avi, *.mp4) do (
for /f %%b in ('mkvmerge -I "%%a" ^| find /c /i "language:heb"') do (
if [%%b]==[1] (
echo "%%a" has Hebrew subtitles
pause
) else (
echo.
echo "%%a" doesn't have Hebrew subtitles
mkvmerge -q -o "%%~dpna (heb Subs)%%~x" -S "%%a" --language 0:heb "%%~dpna.srt"
if errorlevel 1 (
echo Warnings/errors generated during remuxing, original file not deleted
) else (
del /f "%%a"
del /f "%%~dpna.srt"
echo Successfully remuxed to "%%~dpna (heb Subs)%%~xa", original file deleted
)
pause
echo.
)
)
)
答案 0 :(得分:0)
在mkvmerge
行中,将%%~x
更改为.mkv
mkvmerge -q -o "%%~dpna (heb Subs).mkv" -S "%%a" --language 0:heb "%%~dpna.srt"
现在,它正在从源文件中提取原始扩展名。
答案 1 :(得分:0)
mkvmerge -q -o "%%~dpna (heb Subs)%%~x" -S "%%a" --language 0:heb "%%~dpna.srt"
应该是
mkvmerge -q -o "%%~dpna (heb Subs)%%~xa" -S "%%a" --language 0:heb "%%~dpna.srt"
会添加原始文件%%a
的原始扩展名。使用%%~x
时,它会添加 nothing ,因为%%x
未定义且~
从该值中删除了引号。
但您希望输出为.mkv
然后
mkvmerge -q -o "%%~dpna (heb Subs).mkv" -S "%%a" --language 0:heb "%%~dpna.srt"
你可能还需要改变 echo成功复制到“%% ~dpna(heb Subs)%% ~xa”,原始文件已删除
到
echo Successfully remuxed to "%%~dpna (heb Subs).mkv", original file deleted
如果你想要一个明智的报告线。
如果你告诉我们当前的输出是什么,那么会更容易,无论是作为示例文件名还是作为错误报告。