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

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

Naoto

  • Miembro senior
  • ***
  • Desconectado Desconectado
  • Registrado: 23/10/2015
  • Mensajes: 131
  • Valoración: 0
Caracteres especiales en MKVMerge CLI
« Mensaje inicial: 26 de Marzo de 2018, 17:58 »
Al contrario del GUI donde no ocurre este error, en el CLI no reconoce ciertos caracteres en comandos para personalizar nombres, en este caso "--track-name" y como resultado, aparecen otros símbolos en los metadatos del nuevo video.

Código: [Seleccionar]
@echo off
for %%A in (*.MKV) do "D:\MKV\mkvmerge.exe" --language 0:jpn --default-track 0:yes --language 1:jpn --default-track 1:yes --language 2:spa --track-name 2:"Español (México)" --default-track 2:yes --language 3:eng --track-name 3:"English (United States)" --language 4:por --track-name 4:"Português (Brasil)" --track-order 0:0,0:1,0:2,0:3,0:4 -o "D:\MKV\NUEVO\%%~nA.mkv" "%%A"
PAUSE

¿Qué le falta aquí para que MKVMerge los reconozca sin problemas?



tebasuna51

  • Moderador
  • ******
  • Desconectado Desconectado
  • Registrado: 22/02/2010
  • Mensajes: 4.524
  • Valoración: 249
Re:Caracteres especiales en MKVMerge CLI
« Respuesta #1: 27 de Marzo de 2018, 13:26 »
Es un problema de los archivos CLI, que dependen del SO y de las personalizaciones de idioma.
Los caracteres especiales no estandar se pueden representar con distintas combinaciones de bytes en el archivo .bat

Así, tomando como ejemplo la ñ, se representa como el byte 0xA4 o 164 en codificación OEM, como 0xF1 o 241 en ANSI y como el par 0xC3 o 195 y 0xB1 o 177 en UTF-8.
Depende pues de la codificación que use tu editor de ese archivo .bat.
En mi sistema me funciona correctamente un editor viejo y codificación OEM pero con el Block de Notas no me funciona ni la ANSI ni la UTF-8, supongo que puede arreglarse con el parámetro:

Citar
--command-line-charset character-set    

Sets the character set to convert strings given on the command line from. It defaults to the character set given by system's current locale. This settings applies to arguments of the following options: --title, --track-name and --attachment-description.

Pero desconozco que character-set necesitas para leer tu .bat.

EDITO: He probado --command-line-charset UTF-8 con un .bat generado como UTF-8, pero sin resultado correcto.
Me rindo. Pon textos sin caracteres especiales o usa MkvToolNixGUI.
« Última modificación: 27 de Marzo de 2018, 15:03 por tebasuna51 »

Naoto

  • Miembro senior
  • ***
  • Desconectado Desconectado
  • Registrado: 23/10/2015
  • Mensajes: 131
  • Valoración: 0
Re:Caracteres especiales en MKVMerge CLI
« Respuesta #2: 27 de Marzo de 2018, 15:50 »
Es un problema de los archivos CLI, que dependen del SO y de las personalizaciones de idioma.
Los caracteres especiales no estandar se pueden representar con distintas combinaciones de bytes en el archivo .bat

Así, tomando como ejemplo la ñ, se representa como el byte 0xA4 o 164 en codificación OEM, como 0xF1 o 241 en ANSI y como el par 0xC3 o 195 y 0xB1 o 177 en UTF-8.
Depende pues de la codificación que use tu editor de ese archivo .bat.
En mi sistema me funciona correctamente un editor viejo y codificación OEM pero con el Block de Notas no me funciona ni la ANSI ni la UTF-8, supongo que puede arreglarse con el parámetro:

Citar
--command-line-charset character-set    

Sets the character set to convert strings given on the command line from. It defaults to the character set given by system's current locale. This settings applies to arguments of the following options: --title, --track-name and --attachment-description.

Pero desconozco que character-set necesitas para leer tu .bat.

EDITO: He probado --command-line-charset UTF-8 con un .bat generado como UTF-8, pero sin resultado correcto.
Me rindo. Pon textos sin caracteres especiales o usa MkvToolNixGUI.

Es que el renombrado con las mismas etiquetas es para más de 100 archivos, por eso pretendo usar este método en lugar de hacerlo archivo por archivo en MkvToolNix que solo me haría perder el tiempo.

Tengo aparte el NotePad++ para desde allí guardar nuevos archivos .bat en lugar de seguir usando el Bloc de Notas de Windows, pero no estoy seguro cual de las codificaciones disponibles allí es la que puede funcionar.

Edit: Como mencionaste la codificación OEM, seleccioné algunas hasta que logré obtener el resultado deseado con OEM 858, pero esto ahora solo abre otras dudas en mi, cómo cual codificación hubiese necesitado si usaba también otros caracteres como los japoneses (porque está claro que usar UTF-8 no funcionaba en este caso para los esos otros caracteres occidentales).
« Última modificación: 27 de Marzo de 2018, 16:29 por Naoto »

jj35

  • Miembro habitual
  • ****
  • Desconectado Desconectado
  • Registrado: 23/05/2013
  • Mensajes: 315
  • Valoración: 25
  • Sexo: Masculino
Re:Caracteres especiales en MKVMerge CLI
« Respuesta #3: 02 de Junio de 2018, 16:36 »
Estaba leyendo y creo que con el block de notas se soluciona colocando al principio del bat :  chcp 1252 y al final chcp 850. Creo recordar que es asi como lo solucioné una vez, cambiando la página de códigos.

@echo off
chcp 1252
...
...
chcp 850
exit

En el Notepad++ "codificación en ansi" - juego de caracteres - "europeo occidental" -  "oem 850", no lo puedo probar porque ahora estoy probando/usando ubuntu.
« Última modificación: 02 de Junio de 2018, 16:47 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 #4: 27 de Junio de 2018, 05:41 »
Estaba leyendo y creo que con el block de notas se soluciona colocando al principio del bat :  chcp 1252 y al final chcp 850. Creo recordar que es asi como lo solucioné una vez, cambiando la página de códigos.

@echo off
chcp 1252
...
...
chcp 850
exit

En el Notepad++ "codificación en ansi" - juego de caracteres - "europeo occidental" -  "oem 850", no lo puedo probar porque ahora estoy probando/usando ubuntu.

Lo que posteaste funciona, lo probé en otro batch dejándolo como ANSI. Lo que aun queda pendiente y no he podido resolver es sobre el uso de los demás caracteres y códigos de pagina, siendo que en CMD el UTF-8 es ilegible. ¿Como es que el editor de CLI interno de MKVToolnix GUI o MKVMerge GUI puede interpretar esos datos sin problemas, si se supone que hace uso del mismo codigo? Algo similar ocurre con una versión de YAMB+MP4Box que tengo aparte (de varias versiones descargadas que tengo) y la cual si me acepta el Unicode. Si en GUI funciona, debería ser lo mismo CLI con más razón.

jj35

  • Miembro habitual
  • ****
  • Desconectado Desconectado
  • Registrado: 23/05/2013
  • Mensajes: 315
  • Valoración: 25
  • Sexo: Masculino
Re:Caracteres especiales en MKVMerge CLI
« Respuesta #5: 27 de Junio de 2018, 19:27 »
No se que caracteres necesitas ni puedo probarlo, pero CMD hay caracteres que necesitan codigo de escape "^( ^)" este es uno de esos,si buscas lo encontraras en internet, prueba a ver: --track-name 2:"Español ^(México^)". Y la página de códigos adecuada.
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 #6: 27 de Junio de 2018, 22:14 »
No se que caracteres necesitas ni puedo probarlo, pero CMD hay caracteres que necesitan codigo de escape "^( ^)" este es uno de esos,si buscas lo encontraras en internet, prueba a ver: --track-name 2:"Español ^(México^)". Y la página de códigos adecuada.

Ya que lo mencionas, en los argumentos de salida para CMD que se ve en el visor CLI de MKVToolnix GUI, aparecen dichos caracteres de escape (para todos los campos, incluyendo los de rutas de archivo), sin embargo, aunque yo haga uso de dicho formato en mi archivo batch (el cual por cierto tuve que guardarlo como UTF-8 sin BOM porque si lo guardo como UTF-8 el @echo off del principio aparecerá con error), siguen sin aparecer los caracteres correctos.

Naoto

  • Miembro senior
  • ***
  • Desconectado Desconectado
  • Registrado: 23/10/2015
  • Mensajes: 131
  • Valoración: 0
Re:Caracteres especiales en MKVMerge CLI
« Respuesta #7: 28 de Junio de 2018, 06:09 »
Después de algunas horas de búsqueda, gracias a un batch que encontré, el cual hace uso de archivos *.JSON (cuya codificación es UTF-8 sin BOM), y haciendo unas pruebas, cuando la linea de comandos está en un archivo *.JSON generado por MKVToolnix (ignoro desde que versión superior a la 6 está disponible la opción de guardar los comandos en formato *.JSON), el UTF-8 y los demás CHCP funcionan. El inconveniente de este método es que solo funciona correctamente para pistas internas al momento de hacer cambio de contenedor a contenedor. Si añado subtitulos o audios externos, dichos archivos se agregan al multiplexado, pero no aparece la personalización de tracks que está en el archivo *.JSON, por lo que en su lugar los metadatos solo dirá "ass" en todos los subs agregados y nada más. No sé si hay forma de que ese método se pueda adaptar a lo que estoy queriendo hacer. Aun así, no dejo de preguntarme qué más se tiene que hacer para que funcione esto en un batch normal pero guardado como UTF-8. Insisto, si en GUI funciona, en CLI también debería serlo.

jj35

  • Miembro habitual
  • ****
  • Desconectado Desconectado
  • Registrado: 23/05/2013
  • Mensajes: 315
  • Valoración: 25
  • Sexo: Masculino
Re:Caracteres especiales en MKVMerge CLI
« Respuesta #8: 28 de Junio de 2018, 08:23 »
Incluye la linea de comando del bat para ver que caracteres contiene, en principio solo se necesita el código de escape para ciertos caracteres, mkvtoolnix lo adaptará a utf-8.
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 #9: 28 de Junio de 2018, 19:08 »
Bueno, este es el batch que ahora pretendo que funcione.

Citar
@echo off
set "mkvmerge=D:\mkvmerge\mkvmerge.exe"
FOR %%I in (D:\input\*.MP4) DO "%mkvmerge%" --output "D:\output\%%~nI.mkv" --language 0:jpn --language 1:jpn --track-name 1:"日本語" ( "%%I" ) --sub-charset 0:UTF-8 --language 0:spa --track-name 0:"Español (México)" ( "D:\input\%%~nI_esLA.ass" ) --sub-charset 0:UTF-8 --language 0:eng ( "D:\input\%%~nI_enUS.ass" ) --sub-charset 0:UTF-8 --language 0:por --track-name 0:"Português (Brasil)" ( "D:\input\%%~nI_ptBR.ass" ) --track-order 0:0,0:1,1:0,2:0,3:0
PAUSE

Adaptado al código CMD (pero usando un solo archivo y nombres fijos) con caracteres de escape, según MKVToolnix, sería así

Citar
"D:\mkvmerge\mkvmerge.exe" --ui-language es --output ^"D:\output\test ^(1^).mkv^" --language 0:und --language 1:jpn --track-name ^"1:日本語^" ^"^(^" ^"D:\input\test.mp4^" ^"^)^" --language 0:spa --track-name ^"0:Español ^(México^)^" ^"^(^" ^"D:\input\test_esLA.ass^" ^"^)^" --language 0:eng ^"^(^" ^"D:\input\test_enUS.ass^" ^"^)^" --language 0:por --track-name ^"0:Português ^(Brasil^)^" ^"^(^" ^"D:\input\test_ptBR.ass^" ^"^)^" --track-order 0:0,0:1,1:0,2:0,3:0

Por otro lado, este es el batch que mencioné antes, el que usa archivos *.JSON.

Citar
@echo off
set mkvmerge="D:\mkvmerge\mkvmerge.exe"
if not exist "options.json" (
    echo Options file 'options.json' not found. Exiting.
    pause
    exit
)
if not exist "mkvmerge_out" (mkdir "mkvmerge_out")
for %%f in (*.mp4) do %mkvmerge% @options.json -o "mkvmerge_out/%%f" "%%f"
echo.
echo ============================
echo Done.
pause

Y este es el código del archivo JSON, al cual se le tiene que editar eliminando las rutas de entrada y salida de archivos, pero conserva las rutas de los subs porque si las elimino y en su lugar las agrego al bat, ocurrirá lo que mencioné más arriba.

Citar
[
  "--ui-language",
  "es",
  "--language",
  "0:und",
  "--language",
  "1:jpn",
  "--track-name",
  "1:日本語",
  "--language",
  "0:spa",
  "--track-name",
  "0:Español (México)",
  "(",
  "D:\\input\\test_esLA.ass",
  ")",
  "--language",
  "0:eng",
  "(",
  "D:\\input\\test_enUS.ass",
  ")",
  "--language",
  "0:por",
  "--track-name",
  "0:Português (Brasil)",
  "(",
  "D:\\input\\test_ptBR.ass",
  ")",
  "--track-order",
  "0:0,0:1,1:0,2:0,3:0"
]


jj35

  • Miembro habitual
  • ****
  • Desconectado Desconectado
  • Registrado: 23/05/2013
  • Mensajes: 315
  • Valoración: 25
  • Sexo: Masculino
Re:Caracteres especiales en MKVMerge CLI
« Respuesta #10: 29 de Junio de 2018, 03:13 »
No conseguí que guardase los caracteres del nombre en cmd, con mkvtoolnix-gui, si los guarda, no se que pagina de códigos usa mkvtoolnix o como lo hace.

Spoiler
@echo off
set mkvmerge=z:\media\patri\Datos-L-W\mkvmerge\mkvmerge.exe

FOR %%I in (*.mkv) DO (
   %mkvmerge% --output ^"z:\media\patri\Datos-L-W\destino\%%I^" --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^)^" ^"^(^" ^"%%I.srt^" ^"^)^" --language 0:eng ^"^(^" ^"%%I_eng.srt^" ^"^)^" --language 0:por --track-name ^"0:Português ^(Brasil^)^" ^"^(^" ^"%%I_por.srt^" ^"^)^" --track-order 0:0,0:1,1:0,2:0,3:0
)
pause
goto :eof

Tanto en Linux como en Windows funciona, pero no se guarda  el nombre "日本語" .

En las versiones actuales se puede guardar la linea de comando en .json, eso no lo probé.

Spoiler
linux:

 /usr/bin/mkvmerge --ui-language es_ES --output /media/patri/Datos-L-W/destino/historia.mkv --language 0:jpn --default-track 0:yes --language 1:jpn --track-name 1:日本語 --default-track 1:yes '(' /media/patri/Datos-L-W/historia.mkv ')' --language 0:spa --track-name '0:Español (México)' '(' /media/patri/Datos-L-W/historia.mkv.srt ')' --language 0:eng '(' /media/patri/Datos-L-W/historia.mkv_eng.srt ')' --language 0:por --track-name '0:Português (Brasil)' '(' /media/patri/Datos-L-W/historia.mkv_por.srt ')' --track-order 0:0,0:1,1:0,2:0,3:0

 windows:

 /usr/bin/mkvmerge --ui-language es_ES --output /media/patri/Datos-L-W/destino/historia.mkv --language 0:jpn --default-track 0:yes --language 1:jpn --track-name ^"1:日本語^" --default-track 1:yes ^"^(^" /media/patri/Datos-L-W/historia.mkv ^"^)^" --language 0:spa --track-name ^"0:Español ^(México^)^" ^"^(^" /media/patri/Datos-L-W/historia.mkv.srt ^"^)^" --language 0:eng ^"^(^" /media/patri/Datos-L-W/historia.mkv_eng.srt ^"^)^" --language 0:por --track-name ^"0:Português ^(Brasil^)^" ^"^(^" /media/patri/Datos-L-W/historia.mkv_por.srt ^"^)^" --track-order 0:0,0:1,1:0,2:0,3:0

.json:

[
  "--ui-language",
  "es_ES",
  "--output",
  "/media/patri/Datos-L-W/destino/historia.mkv",
  "--language",
  "0:jpn",
  "--default-track",
  "0:yes",
  "--language",
  "1:jpn",
  "--track-name",
  "1:日本語",
  "--default-track",
  "1:yes",
  "(",
  "/media/patri/Datos-L-W/historia.mkv",
  ")",
  "--language",
  "0:spa",
  "--track-name",
  "0:Español (México)",
  "(",
  "/media/patri/Datos-L-W/historia.mkv.srt",
  ")",
  "--language",
  "0:eng",
  "(",
  "/media/patri/Datos-L-W/historia.mkv_eng.srt",
  ")",
  "--language",
  "0:por",
  "--track-name",
  "0:Português (Brasil)",
  "(",
  "/media/patri/Datos-L-W/historia.mkv_por.srt",
  ")",
  "--track-order",
  "0:0,0:1,1:0,2:0,3:0"
]

EDITO.

En windows si los archivos tienen el mismo nombre: (historia.mkv, historia.srt, historia_eng.srt, historia_por.srt, etc...), se puede usar este código en el bat, lo probé en d:\prueba, el bat y los videos/archivos en la carpeta "d:\prueba" y el destino "d:\prueba\destino".

Spoiler
@echo off
setlocal enabledelayedexpansion
set mkvmerge=D:\mkvmerge\mkvmerge.exe
set ext=.mkv
FOR %%I in (*%ext%) DO (
    set nom=%%I&set nom=!nom:~0,-4!
    %mkvmerge% --output ^".\destino\%%I^" --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^)^" ^"^(^" ^"!nom!.srt^" ^"^)^" --language 0:eng ^"^(^" ^"!nom!_eng.srt^" ^"^)^" --language 0:por --track-name ^"0:Português ^(Brasil^)^" ^"^(^" ^"!nom!_por.srt^" ^"^)^" --track-order 0:0,0:1,1:0,2:0,3:0
)
pause
endlocal
goto :eof
« Última modificación: 29 de Junio de 2018, 14:21 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 #11: 30 de Junio de 2018, 01:15 »
Supuestamente en la misma documentación de MKVmerge dice, "convierte cada archivo de texto que lee, así como cada texto dado en la línea de comandos, desde un conjunto de caracteres a UTF-8", pero eso no ha sucedido en ninguno de los intentos con batch en UTF-8 que hice y se me hace tan curioso que hasta ahora no se mencione o se sepa qué otra cosa más hace para convertir todos los caracteres posibles a su antojo.

Naoto

  • Miembro senior
  • ***
  • Desconectado Desconectado
  • Registrado: 23/10/2015
  • Mensajes: 131
  • Valoración: 0
Re:Caracteres especiales en MKVMerge CLI
« Respuesta #12: 02 de Julio de 2018, 06:30 »
EDITO.

En windows si los archivos tienen el mismo nombre: (historia.mkv, historia.srt, historia_eng.srt, historia_por.srt, etc...), se puede usar este código en el bat, lo probé en d:\prueba, el bat y los videos/archivos en la carpeta "d:\prueba" y el destino "d:\prueba\destino".

Spoiler
@echo off
setlocal enabledelayedexpansion
set mkvmerge=D:\mkvmerge\mkvmerge.exe
set ext=.mkv
FOR %%I in (*%ext%) DO (
    set nom=%%I&set nom=!nom:~0,-4!
    %mkvmerge% --output ^".\destino\%%I^" --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^)^" ^"^(^" ^"!nom!.srt^" ^"^)^" --language 0:eng ^"^(^" ^"!nom!_eng.srt^" ^"^)^" --language 0:por --track-name ^"0:Português ^(Brasil^)^" ^"^(^" ^"!nom!_por.srt^" ^"^)^" --track-order 0:0,0:1,1:0,2:0,3:0
)
pause
endlocal
goto :eof

Bueno, ya hice mis pruebas y sigo obteniendo los mismos errores:

* µùѵ£¼Þ¬×
* Espa├▒ol (M├®xico)
* Português (Brasil)

No tengo idea absoluta de que más haga falta.

jj35

  • Miembro habitual
  • ****
  • Desconectado Desconectado
  • Registrado: 23/05/2013
  • Mensajes: 315
  • Valoración: 25
  • Sexo: Masculino
Re:Caracteres especiales en MKVMerge CLI
« Respuesta #13: 02 de Julio de 2018, 13:25 »
Lo de los acentos y la "ñ" con la página de códigos 1252 u otra, abre el block de notas cargas el archivo y al principio de script pones la página de códigos como ya vimos en el otro post.

Los caracteres del nombre yo no conseguí que los mostrase correctamente.
Sabe más el diablo por viejo que por diablo.

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

tebasuna51

  • Moderador
  • ******
  • Desconectado Desconectado
  • Registrado: 22/02/2010
  • Mensajes: 4.524
  • Valoración: 249
Re:Caracteres especiales en MKVMerge CLI
« Respuesta #14: 04 de Julio de 2018, 11:39 »
Hasta donde yo sé no es posible, por línea de comandos, usar dos páginas de códigos simultaneamente.
Y es lo que se pretende al intentar incluir caracteres japoneses junto con acentos+ñ españoles.

Por defecto mi sistema operativo usa la página de códigos 850 como se ve escribiendo en una ventana de comandos:
Citar
D:\>chcp
Página de códigos activa: 850

Poseo un editor de textos que graba archivos con esa página y no necesito hacer ningún cambio para que me acepte acentos+ñ, pero usando el Bloc de Notas se graban con la página de códigos 1252 (modo ANSI) y por ello jj35 propone el cambio:

Citar
chcp 1252
(textos grabados en modo ANSI 1252)
chcp 850
(para retornar a la página por defecto del SO)

De hecho en UsEac3to necesito un conversor de caracteres especiales del ANSI 1252, con que trabaja Autoit, al 850 que es el defecto del SO.
Si visualizais los zzJob_X.cmd (en la carpeta de UsEac3to tras pedir un job con nombres de archivos con acentos+ñ) con el Bloc de notas veréis caracteres extraños en lugar de esos acentos+ñ.

Esto es posible ya que en las páginas 1252 y 850 existen los acentos+ñ, aunque con distintos códigos, pero los que no existen en ninguna de esas dos páginas son los caracteres japoneses.

Por cierto la cantidad de caracteres de escape ^ y parénrtesis a mi me son innecesarias, me funciona sin problemas:

Citar
set mkvmerge=C:\Portable\MkvToolNix\mkvmerge.exe
set ext=.mkv
FOR %%I in (*%ext%) DO (
    set nom=%%I&set nom=!nom:~0,-4!
    %mkvmerge% --output ".\destino\%%I" --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)" "!nom!.srt" --language 0:eng "!nom!_eng.srt" --language 0:por --track-name "0:Português (Brasil)" "!nom!_por.srt" --track-order 0:0,0:1,1:0,2:0,3:0
)

Como véis mi editor no ha sabido convertir los caracteres japoneses y los ha cambiado a "???" por desconocidos.