elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [BATCH] Variables generadas con FOR no reconocen acentos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [BATCH] Variables generadas con FOR no reconocen acentos  (Leído 5,157 veces)
TitoHL.

Desconectado Desconectado

Mensajes: 4



Ver Perfil
[BATCH] Variables generadas con FOR no reconocen acentos
« en: 5 Septiembre 2012, 05:01 am »

Hola:
Como visitante he aprendido mucho consultando este foro, y por ello les agradezco. Pero ahora tengo un problema que no he podido solucionar.
Al generar una variable con el comando FOR, esta no reconoce los acentos.
Por ejemplo, en el siguiente código, FOR genera la variable MyMus, cuyo valor debería ser la ruta D:\Mis Documentos\Mi música. En cambio, el resultado es D:\Mis Documentos\Mi m·sica

Código:
@echo off
echo La salida del comando ECHO es:
ECHO     My Music    REG_SZ  D:\Mis Documentos\Mi m£sica
echo.
echo Con el comando FOR asignamos solo la ruta a la variable MyMus
FOR /F "tokens=3* delims=        " %%A IN ('ECHO     My Music    REG_SZ  D:\Mis Documentos\Mi m£sica') DO SET MyMus=%%B
echo.
echo Pero el valor de MyMus es %MyMus%

¿Cuál será la solución a esto?


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: [BATCH] Variables generadas con FOR no reconocen acentos
« Respuesta #1 en: 5 Septiembre 2012, 10:21 am »

¿Cuál será la solución a esto?
Se debe a la codificación en la que has guardado el bat...

Guardalo en codificación ANSI



Saludos.


En línea



TitoHL.

Desconectado Desconectado

Mensajes: 4



Ver Perfil
Re: [BATCH] Variables generadas con FOR no reconocen acentos
« Respuesta #2 en: 5 Septiembre 2012, 20:28 pm »

Gracias por tu comentario, Elektro. Pero, me temo que la codificación está bien. De hecho, si ejecutas el Batch, te darás cuenta de que el comando ECHO presenta la palabra música escrita correctamente.
Saludos.
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: [BATCH] Variables generadas con FOR no reconocen acentos
« Respuesta #3 en: 5 Septiembre 2012, 21:54 pm »

el comando ECHO presenta la palabra música escrita correctamente.
Claro, Porque hiciste la modificación necesaria del caracter, ¿Entonces cual es el problema que quieres resolver?
creo que uno de los dos se ha confundido

('ECHO     My Music    REG_SZ  D:\Mis Documentos\Mi m£sica')

¿Estás seguro que la linea del script que estás probando lo tienes como el que he citado?...
Creo que te has podido confundir en eso, o me he confundido yo, Lo digo porque para que la consola te llegue a mostar mal el caracter que he marcado en rojo y en su lugar muestre el caracter del punto ".", deberia haber un "ú" en su lugar, y no un £. En el ejemplo citado ya hiciste la modificación necesaria del caracter para poder mostrarlo correctamente, Por eso es imposible que ocurra el error que dices tener y que no se muestre correctamente si lo has guardado en ANSI...

De todas formas no es algo preocupante, Batch no reconoce los caracteres latinos para mostrarlos, pero si para leerlos/usarlos, que es lo importante... Y si quieres mostrar un caracter pues tienes que hacer la modificación... Aquí puedes ver la diferencia:

Código
  1. @Echo OFF
  2. Set VAR=Música    & Call Echo Mal : %%VAR%% | MORE
  3. Set VAR=%VAR:ú=£% & Call Echo Bien: %%VAR%% | MORE



PD: No se si habrás oido hablar del comando para cambiar el código de páginas (CHCP), Pero no te confundas, sirve para reconocer los caracteres, no te va a servir para mostrarlos. La única manera es como dije, o al menos, nunca he visto que sea posible de otra manera.

Un saludo
« Última modificación: 5 Septiembre 2012, 22:00 pm por EleKtro H@cker » En línea



TitoHL.

Desconectado Desconectado

Mensajes: 4



Ver Perfil
Re: [BATCH] Variables generadas con FOR no reconocen acentos
« Respuesta #4 en: 6 Septiembre 2012, 03:40 am »

Disculpa, creo que fui poco claro.
Tengo Windows XP y deseo hacer un script que me cambie la ubicación de la carpeta Mi música. Para ello, lo primero que hago es identificar la ubicación actual de esta, usando el comando REG QUERY. Pero como la salida de este comando presenta mucha más información que la estrictamente necesaria, filtro la ruta de Mi música con el comando FOR. Finalmente, cuando quiero tener una variable cuyo valor sea la ruta de esta carpeta, ocurre que la ruta reemplaza la ú por el ·.
Corrijo el código
Código:
@echo off
echo La salida del comando REG QUERY es:
REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "My Music"
echo.
echo Con el comando FOR asignamos solo la ruta anterior a la variable MyMus
FOR /F "tokens=3* delims=        " %%A IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "My Music"') DO SET MyMus=%%B
echo.
echo Pero el valor de MyMus es %MyMus%
Pero no creo que sirva en Vista o 7, porque la carpeta la carpeta Mi música me parece que se llama My music es estos OS.
NOTA: El script está guardado en ANSI.
« Última modificación: 6 Septiembre 2012, 03:48 am por TitoHL. » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: [BATCH] Variables generadas con FOR no reconocen acentos
« Respuesta #5 en: 6 Septiembre 2012, 08:39 am »

Finalmente, cuando quiero tener una variable cuyo valor sea la ruta de esta carpeta, ocurre que la ruta reemplaza la ú por el ·.
De todas formas no es algo preocupante, Batch no reconoce los caracteres latinos para mostrarlos, pero si para leerlos/usarlos, que es lo importante...
Lee lo que dije atentamente, Con eso quise decir que no importa que la variable "mymus" te muestre mal el caracter, Pero puedes usarlo para el propósito de crear/borrar una carpeta con el caracter "ú".

Ejemplo:
Código
  1. @Echo OFF
  2. CHCP 1250 >NUL
  3. FOR /F "tokens=3*" %%A IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "My Music"') DO (SET "MyMusic=%%~nB")
  4. Echo El valor de MyMus es %MyMusic% | MORE
  5.  
  6. REM Test
  7. :: Crear la capeta "C:\Mi Música"
  8. MKDIR "%SYSTEMDRIVE%\%MYMUSIC%" && Echo la carpeta "%SYSTEMDRIVE%\%MYMUSIC%" se cre¢ correctamente.
  9.  



De todas formas expliqué también que el error que comentas tener es imposible que te suceda tal y como lo estás describiendo.
Acabo de probar el último código que has puesto en una máquina virtual con Windows XP SP3 y muestra la variable "MYMUS" correctamente:

Código
  1. @echo off
  2. echo La salida del comando REG QUERY es:
  3. REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "My Music"
  4. echo Con el comando FOR asignamos solo la ruta anterior a la variable MyMus
  5. FOR /F "tokens=3*" %%A IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "My Music"') DO (SET MyMus=%%B)
  6. echo El valor de MyMus es %MyMus%



saludos
En línea



TitoHL.

Desconectado Desconectado

Mensajes: 4



Ver Perfil
Re: [BATCH] Variables generadas con FOR no reconocen acentos
« Respuesta #6 en: 6 Septiembre 2012, 18:30 pm »

¡Grande maestro!
Tus últimos ejemplos me lo dejaron super claro. Y tal como supusiste, me confundí entre lo que se ve y lo que se reconoce.
El comando CHCP hace que funcione bien.
Muchas gracias.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Variables dentro de variables (batch)
Scripting
MK-Ultra 8 7,908 Último mensaje 6 Febrero 2008, 23:18 pm
por GUN$
Tip sobre acentos en Batch.
Scripting
leogtz 8 15,347 Último mensaje 24 Septiembre 2010, 09:38 am
por NetVicious
Acentos en batch???
Scripting
Sr.Origami 1 2,957 Último mensaje 17 Junio 2010, 18:58 pm
por Darioxhcx
[BATCH] ¿Como puedo meter variables dentro de variables?
Scripting
Meine programmen 1 4,191 Último mensaje 24 Marzo 2012, 16:48 pm
por Eleкtro
[APORTE] [BATCH] Acentos en los programas Batch - La mejor solución
Scripting
Príncipe_Azul 5 13,263 Último mensaje 2 Mayo 2014, 00:09 am
por cyberalejo17
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines