Batch verwijderen van ondertiteling uit een mkv bestand

Status
Niet open voor verdere reacties.

heula

Gebruiker
Lid geworden
7 nov 2000
Berichten
225
Ik heb een script op het net gevonden die wel in de buurt komt van wat ik wil maar niet helemaal.

Dit script vraagt welke audio en ondertiteling bestanden er moeten blijven of verwijderd moeten worden.

Kan iemand het script dusdanig aanpassen dat er geen vragen gesteld worden maar direct alle ondertiteling bestanden worden verwijderd en alle audio gewoon er in blijft.
Wanneer het proces succesvol is geweest dan het originele bestand laten verwijderen naar de prullenbak als dat mogelijk is.
Het script moet alle mkv bestanden in de map behandelen.

Bedankt.

Code:
@echo off

title MKVstrip

cls
set /p MM=This batch script will strip unwanted audio/subtitle tracks from ALL .mkv files in the directory it is run from. The changes will be made to copies of the files and the originals will remain untouched. For this reason, please make sure you have enough disk space for the output files. Continue? (Y/N):
IF '%MM%' == 'Y' GOTO AS
IF '%MM%' == 'y' GOTO AS
IF '%MM%' == 'N' GOTO EN
IF '%MM%' == 'n' GOTO EN

:AS
cls
set /p AT=Type the track ID(s) of the audio track(s) you would like to KEEP, seperated by commas (to keep ALL type 0, to view track IDs type i):
IF '%AT%' == 'i' GOTO ID
IF '%AT%' == '0' GOTO SSNA

:SS
cls
set /p ST=Type the track ID(s) of the subtitle track(s) you would like to KEEP, seperated by commas (if none are present or to remove ALL then type 0):
IF '%ST%' == '0' GOTO NS

:WS
cls
md output
for %%i in (*.mkv) do mkvmerge -o output/"%%i" --atracks "%AT%" --stracks "%ST%" "%%i"
cls
Echo The process is complete. The stripped files are located in the "output" folder.
pause
exit

:SSNA
cls
set /p ST=Type the track ID(s) of the subtitle track(s) you would like to KEEP, seperated by commas (if none are present or to remove ALL then type 0):
IF '%ST%' == '0' GOTO NANS

:NA
cls
md output
for %%i in (*.mkv) do mkvmerge -o output/"%%i" --stracks "%ST%" "%%i"
cls
Echo The process is complete. The stripped files are located in the "output" folder.
pause
exit

:NANS
cls
md output
for %%i in (*.mkv) do mkvmerge -o output/"%%i" --no-subtitles "%%i"
cls
Echo The process is complete. The stripped files are located in the "output" folder.
pause
exit

:NS
cls
md output
for %%i in (*.mkv) do mkvmerge -o output/"%%i" --atracks "%AT%" --no-subtitles "%%i"
cls
Echo The process is complete. The stripped files are located in the "output" folder.
pause
exit

:ID
for %%i in (*.mkv) do mkvmerge -i "%%i"
Echo Press ENTER to continue:
pause
GOTO AS

:EN
exit
 
Laatst bewerkt:
Heb een betere code gevonden die bijna is wat ik wil. In het onderstaande script zou ik graag een output folder willen voor de nieuwe gemaakte bestanden van dit script. Als iemand dat weet dan ben ik er uit.

Code:
@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.
        )
    )
)
 
Je zou dan dit:
mkvmerge -q -o "%%~dpna (No Subs)%%~xa" -S "%%a"

kunnen wijzigen in bijvoorbeeld:
mkvmerge -q -o "C:\Outfolder\%%~dpna (No Subs)%%~xa" -S "%%a"
 
Je zou dan dit:
mkvmerge -q -o "%%~dpna (No Subs)%%~xa" -S "%%a"

kunnen wijzigen in bijvoorbeeld:
mkvmerge -q -o "C:\Outfolder\%%~dpna (No Subs)%%~xa" -S "%%a"
Helaas krijg ik dan een foutmelding dat de output folder niet kan worden gemaakt.
 
Die moet je ook eerst zelf aanmaken uiteraard.
 
Ik kan de situatie hier zo niet nabootsen dus ben bang dat ik er verder niets over kan zeggen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan