具有特定扩展名的批处理脚本输出文件

Batch script output file with a specific extension

这对你来说可能是个简单的问题。

我尝试更改此脚本,使输出文件扩展名为 .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.
        )
    )
)

mkvmerge 行中,将 %%~x 更改为 .mkv

mkvmerge -q -o "%%~dpna (heb Subs).mkv" -S "%%a" --language 0:heb "%%~dpna.srt"

现在,它正在从源文件中提取原始扩展。

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

如果你想要一个合理的报告行。

如果您告诉我们当前的输出是什么,既可以作为示例文件名,也可以作为错误报告,那就更容易了。