Estoy depurando un archivo de comando de Windows Batch. Está fallando cuando se usan caracteres extendidos (> 0x7f) en las rutas o nombres de archivos. El problema parece estar relacionado con pasar parámetros a un archivo de comando que está LLAMADO desde otro.¿Manejar caracteres extendidos en los comandos de Windows?
Por ejemplo, este comando funciona como se esperaba:
xcopy "Pezuñero\1 - 001.wav" \temp
Esto no significa:
call another.cmd "Pezuñero"
contenidos de "another.cmd":
xcopy "%~1\1 - 001.wav" \temp
El% ~ 1 sintaxis expande un parámetro y elimina las comillas. Esto es necesario porque en el archivo de comando real, las rutas en el archivo de comando llamado o llamado pueden tener espacios.
El resultado del segundo ejemplo (copiado de la ventana CMD) es la siguiente:
C:\>call another.cmd "Pezu±ero"
C:\>xcopy "Pezu±ero\1 - 001.wav" \temp
File not found - 1 - 001.wav
0 File(s) copied
Tenga en cuenta que el (0xf1) carácter "ñ" se ha cambiado a un "±" (0xB1).
¿Alguien puede explicar lo que está pasando y cómo solucionarlo?
También puede usar CharToOem para convertir las cadenas justo antes de escribirlas en su secuencia de comandos: http://msdn.microsoft.com/en-us/library/ms647473.aspx –