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

时间:2015-01-18 20:04:16

标签: windows batch-file cmd

这可能是一个简单的问题。

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

2 个答案:

答案 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

如果你想要一个明智的报告线。

如果你告诉我们当前的输出是什么,那么会更容易,无论是作为示例文件名还是作为错误报告。