[BATCH] (Aporte) Script para cortar videos MKV de forma masiva.

Iniciado por Eleкtro, 14 Enero 2012, 18:05 PM

0 Miembros y 1 Visitante están viendo este tema.

Eleкtro

Pues eso xD, Me he bajado una gran cantidad de videos de DBZ en formato MKV y me aburrí de ir cortandolos uno por uno con la GUI del maldito mkvtoolnix, Así que me he puesto a repasar los comandos de este, y al final he acabado haciendo este útil script para cortar opening+ending de forma masiva.





Info:
Este código sirve para cortar videos MKV desde un punto (A) hasta un punto (B), Muy útil para eliminar el Opening y Ending de videos Anime.
El código trabaja sobre los archivos MKV que estén en el mismo directorio que esté el script.

El script utiliza el programa MKVMERGE, Que se puede descargar desde aquí:
www.bunkus.org/videotools/mkvtoolnix/win32/mkvtoolnix-unicode-5.2.1.7z

El script se puede configurar de forma predeterminada para que no haga ninguna pregunta... Un ejemplo sería así:

:Configuración por defecto:
:::::::::::::::::::::::::::
Set Timecode_Start=00:01:47
Set Timecode_End=00:22:35
Set Audio=-a 1
Set Subtitles=--no-subtitles
:::::::::::::::::::::::::::


Notas:
El script reemplaza los videos de origen, por los nuevos cortados. No he puesto ninguna opciónpara esto pero bueno lo podeis evitar simplemente borrando esta línea:
Del /Q "%%_"






El Script:

Código (dos) [Seleccionar]

@Echo Off
Color 07
Mode con cols=70 lines=30
Title MKVMerge Split Helper v0.1

REM By EleKtro H@cker
REM Visita Foro.ElHacker.Net

REM Este código sirve para cortar videos MKV desde un punto (A) hasta un punto (B), Muy útil para eliminar el Opening y Ending de videos Anime.
REM El código trabaja sobre los archivos MKV que estén en el mismo directorio que esté el script.
REM
REM El script utiliza el programa MKVMERGE, Que se puede descargar desde aquí:
REM www.bunkus.org/videotools/mkvtoolnix/win32/mkvtoolnix-unicode-5.2.1.7z





:Configuración por defecto:
:::::::::::::::::::::::::::
Set Timecode_Start=
Set Timecode_End=
Set Audio=
Set Subtitles=
:::::::::::::::::::::::::::





:CHECK
::::::

If not exist "%~dp0\*.MKV" (
Echo.
Echo. No se ha encontrado ningun video en el directorio:
Echo. "%~dp0"
Echo.
Pause
Exit
)

If not exist "mkvmerge.exe" (
Echo.
Echo. No se ha encontrado el programa "MKVMERGE.EXE"
Echo.
Pause
Exit
)

If defined Timecode_Start (Set /A Num+=1)
If defined Timecode_End (Set /A Num+=1)
If defined Audio (Set /A Num+=1)
If defined Subtitles (Set /A Num+=1)
If %num% EQU 4 (Goto :Split:)





:MENU:
::::::

:Timecode_A_SubMenu
:::::::::::::::::::
Cls
Echo.
Echo. Timecode A: Esperando...
Echo ______________________________________________________________________
Echo. Escriba el codigo de tiempo para el punto A...
Echo.
Echo. Ejemplo: "01:20:59"    (Hora:Minuto:Segundo)
Echo.
Set /P Timecode_Start=^>^>

If NOT defined Timecode_Start (Goto :Timecode_A_SubMenu)

Echo %Timecode_Start%| Findstr /I ^..:..:..$ >Nul
If %ErrorLevel% NEQ 0 (
Cls
Echo.
Echo. Ha introducido un valor incorrecto.
Ping -n 3 LocalHost >Nul
Set Timecode_Start=
Goto :Timecode_A_SubMenu
)


:Timecode_B_SubMenu
:::::::::::::::::::
Cls
Echo.
Echo. Timecode A: %Timecode_Start%
Echo. Timecode B: Esperando...
Echo ______________________________________________________________________
Echo. Escriba el codigo de tiempo para el punto B...
Echo.
Echo. Ejemplo: "01:20:59"    (Hora:Minuto:Segundo)
Echo.
Set /P Timecode_End=^>^>

If NOT defined Timecode_Start (Goto :Timecode_B_SubMenu)

Echo %Timecode_Start%| Findstr /I ^..:..:..$ >Nul
If %ErrorLevel% NEQ 0 (
Cls
Echo.
Echo. Ha introducido un valor incorrecto.
Ping -n 3 LocalHost >Nul
Set Timecode_End=
Goto :Timecode_B_SubMenu
)


:Audio_SubMenu
::::::::::::::
Cls
Echo.
Echo. Timecode A: %Timecode_Start%
Echo. Timecode B: %Timecode_End%
Echo. Audio: Esperando...
Echo ______________________________________________________________________
Choice /M "Quiere copiar solamente la pista de audio principal?... "

If %ErrorLevel% EQU 1 (Set Audio=-a 1)


:Subtitles_SubMenu
::::::::::::::::::
Cls
Echo.
Echo. Timecode A: %Timecode_Start%
Echo. Timecode B: %Timecode_End%
If not defined audio (Echo. Audio: Todas las pistas) ELSE (Echo. Audio: Solamente la pista principal)
Echo. Subtitulos: Esperando...
Echo ______________________________________________________________________
Choice /M "Quiere copiar los subtitulos del video de origen?... "

If %ErrorLevel% EQU 2 (Set Subtitles=--no-subtitles)





:Split:
:::::::

Cls
Echo.
Echo. Timecode A: %Timecode_Start%
Echo. Timecode B: %Timecode_End%
If not defined audio (Echo. Audio: Todas las pistas) ELSE (Echo. Audio: Solamente la pista principal)
If not defined subtitles (Echo. Subtitulos: SI) ELSE (Echo. Subtitulos: NO)
Echo ______________________________________________________________________

For /F "Tokens=*" %%_ in ('Dir /B "%~dp0\*.mkv"') do (
Echo+
Echo. Procesando: %%_
mkvmerge.exe %Subtitles% %audio% "%%_" --split timecodes:%Timecode_Start%,%Timecode_End% -o "%%_.ren" >NUL
Del /Q "%%_"
Del /Q "%%_-001.ren"
Del /Q "%%_-003.ren"
Ren "%%_-002.ren" "%%_"
)





:END:
:::::

Cls
Echo.
Echo. Todos los videos se han cortado.
Echo.
Echo. Pulse una tecla para salir...
Pause >Nul
Exit