Autor Tema: Caracteres especiales en MKVMerge CLI  (Leído 469 veces)

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

jj35

  • Miembro habitual
  • ****
  • Desconectado Desconectado
  • Registrado: 23/05/2013
  • Mensajes: 315
  • Valoración: 25
  • Sexo: Masculino
Re:Caracteres especiales en MKVMerge CLI
« Respuesta #15: 04 de Julio de 2018, 22:45 »
Hola tebasuna.

Pues yo en principio solo deje los caracteres de escape en ")(" y no me lo aceptaba, tuve que poner hasta en las comillas, así si, en cambio sin caracteres "()" si lo ejecuta bien sin caracteres de escape, bueno en Wine de Ubuntu, en windows usé el mismo código, no se si lo aceptara sin "^" aunque supongo que si pues a ti si te funciona y cuando yo lo usé alguna vez también .
Sabe más el diablo por viejo que por diablo.

A pesar de estar envejeciendo, sigo aprendiendo, el diablo debe ser muyyy viejo.

Naoto

  • Miembro senior
  • ***
  • Desconectado Desconectado
  • Registrado: 23/10/2015
  • Mensajes: 131
  • Valoración: 0
Re:Caracteres especiales en MKVMerge CLI
« Respuesta #16: 05 de Julio de 2018, 01:12 »
Mea culpa por olvidar agregar CHCP, pues creí que con el uso de los caracteres de escape ya se arreglaba gran parte del problema, pero terminé por usar chcp 65001 y funciona para todos los caracteres, por lo que el script funciona de maravilla. De hecho, por como estaba el script anteriormente, creí que no iba poder usar directorios y extensiones diferentes para entrada y salida de video respectivamente, pero después de unas pruebas hice esto.

Citar
set ext=.mp4

FOR %%I in (.\input\*%ext%) DO (

    set nom=%%I&set nom=!nom:~0,-4!
   
       %mkvmerge% --output ^".\output\%%~nI.mkv^" --language 0:jpn --track-name ^"1:日本語^" --language 1:jpn ^"^(^" ^"%%I^" ^"^)^" --sub-charset 0:UTF-8 --track-name ^"0:Español ^(México^)^" --language 0:spa ^"^(^" ^"!nom!_esLA.ass^" ^"^)^" --sub-charset 0:UTF-8 --language 0:eng ^"^(^" ^"!nom!_enUS.ass^" ^"^)^" --sub-charset 0:UTF-8 --track-name ^"0:Português ^(Brasil^)^" --language 0:por ^"^(^" ^"!nom!_ptBR.ass^" ^"^)^" --track-order 0:0,0:1,1:0,2:0,3:0

La desventaja de esto es que al usar la misma variable para la entrada, incluso para el agregado de subs, todos los archivos deben estar en el mismo directorio establecido, por lo que no tengo la libertad para, al menos, asignar un subdirectorio (es decir, que dentro de "input" tenga otras carpetas donde están los subs por idioma cada uno)

jj35

  • Miembro habitual
  • ****
  • Desconectado Desconectado
  • Registrado: 23/05/2013
  • Mensajes: 315
  • Valoración: 25
  • Sexo: Masculino
Re:Caracteres especiales en MKVMerge CLI
« Respuesta #17: 05 de Julio de 2018, 18:45 »
Las variables se adaptan a la necesidad del proceso, si quieres desde el directorio de ejecución tomar archivos del mismo y otro como "input" set input=d:\directorio\input&set output=d:\directorio\output, después con el modificador %%~nI añades el nombre, en este caso la variable "nom" tal cual está, no sirve ya que asignará la ruta y el nombre de archivo. Tampoco será necesario "setlocal enabledelayedexpansion" y "endlocal" ni los caracteres "!" en lugar de "%", en las varibles set, no pongas nunca "" aunque contengan espacios, las pones después en la variable "%varible%".
Sabe más el diablo por viejo que por diablo.

A pesar de estar envejeciendo, sigo aprendiendo, el diablo debe ser muyyy viejo.

Naoto

  • Miembro senior
  • ***
  • Desconectado Desconectado
  • Registrado: 23/10/2015
  • Mensajes: 131
  • Valoración: 0
Re:Caracteres especiales en MKVMerge CLI
« Respuesta #18: 06 de Julio de 2018, 04:31 »
Las variables se adaptan a la necesidad del proceso, si quieres desde el directorio de ejecución tomar archivos del mismo y otro como "input" set input=d:\directorio\input&set output=d:\directorio\output, después con el modificador %%~nI añades el nombre, en este caso la variable "nom" tal cual está, no sirve ya que asignará la ruta y el nombre de archivo. Tampoco será necesario "setlocal enabledelayedexpansion" y "endlocal" ni los caracteres "!" en lugar de "%", en las varibles set, no pongas nunca "" aunque contengan espacios, las pones después en la variable "%varible%".

Hice las modificaciones de rutas y lo demás, pero creo que interpreté mal esto y por eso en el CMD lo único que me aparece es el CHCP. ¿Podrías nuevamente por favor añadir el código ejemplo?
« Última modificación: 06 de Julio de 2018, 10:16 por tebasuna51 »

jj35

  • Miembro habitual
  • ****
  • Desconectado Desconectado
  • Registrado: 23/05/2013
  • Mensajes: 315
  • Valoración: 25
  • Sexo: Masculino
Re:Caracteres especiales en MKVMerge CLI
« Respuesta #19: 06 de Julio de 2018, 11:21 »
En este ejemplo carga el video/audio de "d:\prueba" teniendo/ejecutando el bat en "d:\prueba".
los subtítulos se cargan en la carpeta "d:\prueba\entrada" teniendo el mismo nombre que el video/audio+el detalle de idioma y extensión. Si el video/audio=video-720p-spa.mkv, los subs=video-720p-spa.mkv.srt - video-720p-spa.mkv_eng.srt - video-720p-spa.mkv_por.srt.

Spoiler
@echo off
set mkvmerge=d:\mkvmerge\mkvmerge.exe
set entrada=d:\prueba\entrada&set salida=d:\prueba\salida
FOR %%I in (*.mkv) DO (
   %mkvmerge% --output ^"%salida%\%%~nI.mkv^" --language 0:jpn --default-track 0:yes --language 1:jpn --track-name ^"1:日本語^" --default-track 1:yes ^"^(^" ^"%%I^" ^"^)^" --language 0:spa --track-name ^"0:Español ^(México^)^" ^"^(^" ^"%entrada%\%%I.srt^" ^"^)^" --language 0:eng ^"^(^" ^"%entrada%\%%I_eng.srt^" ^"^)^" --language 0:por --track-name ^"0:Português ^(Brasil^)^" ^"^(^" ^"%entrada%\%%I_por.srt^" ^"^)^" --track-order 0:0,0:1,1:0,2:0,3:0
)
pause
goto :eof

Ten en cuenta que se pueden usar los modificadores dentro de un for, %entrada%\%%~nI.srt etc... o usar otra variable, según caso se adapta a la necesidad. Otras variables dentro de un for mantienen su valor original si está antes del for, si está al principio del for tomara el valor adecuado en cada iteración, como en el caso de la variable "nom", normalmente no se usa.

No lo probé (ya borré las carpetas de prueba), pero por lógica debe funcionar.
« Última modificación: 06 de Julio de 2018, 11:50 por jj35 »
Sabe más el diablo por viejo que por diablo.

A pesar de estar envejeciendo, sigo aprendiendo, el diablo debe ser muyyy viejo.

Naoto

  • Miembro senior
  • ***
  • Desconectado Desconectado
  • Registrado: 23/10/2015
  • Mensajes: 131
  • Valoración: 0
Re:Caracteres especiales en MKVMerge CLI
« Respuesta #20: 07 de Julio de 2018, 03:06 »
Ya vi cuales fueron mis errores, principalmente fue haber dejado el "set entrada=&set salida=" dentro del FOR en lugar de haberlo sacado de ahí luego de haber borrado los "setlocal enabledelayedexpansion" y "endlocal". Ya después de eso, intenté usar subcarpetas desde el primer modificador del FOR, y en el resto de entradas, al final funcionó como esperaba.

Spoiler
Citar
set mkvmerge=D:\mkvmerge\mkvmerge.exe
set entrada=D:\input&set salida=D:\output
FOR %%I in (%entrada%\video\*.mp4) DO (

   %mkvmerge% --output ^"%salida%\%%~nI.mkv^" --language 0:jpn --track-name ^"1:日本語^" --language 1:jpn ^"^(^" ^"%%I^" ^"^)^" --sub-charset 0:UTF-8 --track-name ^"0:Español ^(México^)^" --language 0:spa ^"^(^" ^"%entrada%\sub\%%~nI_esLA.ass^" ^"^)^" --sub-charset 0:UTF-8 --language 0:eng ^"^(^" ^"%entrada%\sub\%%~nI_enUS.ass^" ^"^)^" --sub-charset 0:UTF-8 --track-name ^"0:Português ^(Brasil^)^" --language 0:por ^"^(^" ^"%entrada%\sub\%%~nI_ptBR.ass^" ^"^)^" --track-order 0:0,0:1,1:0,2:0,3:0

)

Una ultima duda. Supongo que en la linea de "set variable1=& set variable2=" se podría agregar más "& set variableX" ¿No?

jj35

  • Miembro habitual
  • ****
  • Desconectado Desconectado
  • Registrado: 23/05/2013
  • Mensajes: 315
  • Valoración: 25
  • Sexo: Masculino
Re:Caracteres especiales en MKVMerge CLI
« Respuesta #21: 07 de Julio de 2018, 08:54 »
El carácter "&" al final de un comando le dice que ejecute la siguiente orden, dos "&&" le dice que ejecute la siguiente orden si la ejecución fue correcta y "||" lo contrario. Yo lo uso así por evitar nueva linea, pero a gusto de cada uno, consulta la ayuda y busca que encontrarás.

Al fin encontraste la página adecuada (65001), Gracias bueno es saberlo.

 :saludo:
Sabe más el diablo por viejo que por diablo.

A pesar de estar envejeciendo, sigo aprendiendo, el diablo debe ser muyyy viejo.