@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 --identify-verbose "%%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.
        )
    )
)
Который рекурсивно находит все файлы MKV по указанному пути и удаляет все субтитры из найденных файлов MKV (если найденный MKV содержит субтитры), наконец, удаляя все исходные файлы MKV, для которых были удалены субтитры.
Я ищу, чтобы добавить, когда он запускает mkvmerge -i если есть английские субтитры, сказать ему, чтобы извлечь их в каталог файла MKV перед повторным смешиванием (используя mkvextract).
