Remoção MKV Sub e Chapter

1

Estou tentando remover legendas e capítulos de todos os meus arquivos mkv. Eu tenho tentado encontrar uma maneira de adicionar o arquivo de lote abaixo para também procurar por capítulos e removê-los, mas não consegui descobrir como editar a linha de localização. Qualquer ajuda é muito apreciada.

@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 -i "%%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.
        )
    )
)

Se eu reescrever o lote assim. Ele faz o que eu quero, mas é desleixado passar pelos arquivos duas vezes.

@echo off
cls
set rootfolder="D:\uTorrent\Completed Downloads"
echo Enumerating all MKVs under %rootfolder%
echo.
for /r %rootfolder% %%a in (*.mkv) do (
    for /f %%b in ('mkvmerge -i "%%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 --no-chapters "%%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"
            )
            echo.
        )
    )
)
set rootfolder="D:\uTorrent\Completed Downloads"
echo Enumerating all MKVs under %rootfolder%
echo.
for /r %rootfolder% %%a in (*.mkv) do (
    for /f %%b in ('mkvmerge -i "%%a" ^| find /c /i "chapters" ') do (
        if [%%b]==[0] (
            echo "%%a" has no chapters
        ) else (
            echo.
            echo "%%a" has chapters
            mkvmerge -q -o "%%~dpna (No Chapters)%%~xa" -S --no-chapters "%%a"
            if errorlevel 1 (
                echo Warnings/errors generated during remuxing, original file not deleted
            ) else (
                del /f "%%a"
                echo Successfully remuxed to "%%~dpna (No Chapters)%%~xa"
            )
            echo.
        )
    )
)
pause
    
por Kevin Mieszala 23.07.2014 / 11:27

1 resposta

0

Não sei exatamente o que você está tentando fazer exatamente, mas acho que isso pode ajudá-lo. Você pode usar o findstr para procurar por várias strings (ou expressões regulares!) E coisas muito mais interessantes. Eu escrevi e testei um exemplo para você:

c:\tmp\findtest>dir /b
x.txt
y.txt
z.txt

c:\tmp\findtest>type x.txt y.txt z.txt

x.txt:
"this is x"

y.txt:
"this is y"

z.txt:
"this is z"

c:\tmp\findtest>findstr /i /r "x y" *
x.txt:"this is x"
y.txt:"this is y"

/ edit: e, se necessário, adicione | encontre -c -v "" para que, se você se importa apenas com a contagem de linhas da saída do findstr.

    
por 23.07.2014 / 11:50