Tip sobre acentos en Batch.

Iniciado por leogtz, 20 Noviembre 2008, 04:48 AM

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

leogtz

Bueno publico esto ya que varias veces me han preguntado sobre rutas que llevan acentos, y no saben como tratarlos.

Bueno para sacar los acentos vamos a hacer esto :
COPY CON ARCHIVO.TXT
á é í ó ú Á É Í Ó Ú
^Z


Donde ^z, es la combinacion de teclas CTRL+Z
Que significa Fin de archivo en el CMD ó fin de entrada.

Veamos una captura de como quedaría :

Ahora abrimos con el Bloc de notas el archivo que creamos :
notepad archivo.txt


Y ya tenemos nuestros caracteres con acentos listos para usarse en un batch.

Ejemplo :
@echo off
cd /d %homedrive%\
cd canci¢n
echo %cd%
pause


Notese el : ¢.


Esto tambien es util cuando se esta trabajando en una shell remota.
Ejemplo con netcat :



Si se fijan, ahi si tuve que utilizar CTRL+C (Interrupcion de comando).


Otra forma es usar edit.com
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

dimitrix

Perdona mi ignorancia, pero no es más corto poner esto y ya está?:

Citarecho áéíóúÁÉÍÓÚ > archivo.txt

Sería más sencillo y va igual ¿No?




leogtz

No, mira, segun tu linea de codigo :
@echo off
echo áéíóúÁÉÍÓÚ > "archivo.txt"
type "archivo.txt"
pause>nul
goto:eof

Veamos la salida:
ßÚݾ·┴╔═Ë┌

No representa lo mismo.
Ahora esto:
á
é
í
ó
ú
^Z
        1 archivos copiados.
á
é
í
ó
ú

Saludos.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

dimitrix

No, a ver, no se si son cosas distinas o que, pero mira:



Me lo saca correctamente, a ver, yo lo necesitava para una ruta y me va bien pillando el símbolo de ahí.

Un saludo.




leogtz

A ver, voy a tratar de dejarlo claro con un ejemplo.

Hago una carpeta llamada "canción":

C:\>mkdir Canción

C:\>
Si quiero acceder a ella desde la misma shell:
C:\>cd canción

C:\Canción>

Me accede perfectamente.

Pero si lo quiero hacer desde un batch?:
@echo off
cd /d "%homedrive%\canción"
pause>nul

La salida que nos da:
El sistema no puede hallar la ruta especificada.

Ahora, usando este metodo:

C:\>copy con "acentos.txt"
á
é
í
ó
ú
^Z
        1 archivos copiados.

C:\>

Abro el archivo de texto y copio manualmente el ó.
Ahora cambio mi codigo por esto:
@echo off
cd /d "%homedrive%\canci¢n"
pause>nul

Y va a acceder perfectamente.

Saludos.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

EddyW

Esta muy bien yo hago lo mismo y no solo para sacar los acentos tambien para estos caracteres:
☺☻♥♦♣♠•◘○◙♂♀♪♫☼►, etc
deberias añadirlo para que otros aprendan a sacarlos sobre todo estos caracteres muy buenos ☺☻..
SaluDOS!!!

leogtz

Es lo mismo:

C:\>copy con caracteres.txt
^A
^Q
^W
^E
^G


^K
^L
^Z
        1 archivos copiados.

C:\>type caracteres.txt










C:\>

O usar el teclado numerico + ALT.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

EddyW

Si ya se como se hace, lo que sugeria era que pusieras el como se hace al principio, bueno no importa...
de todos modos esta muy bien.. ;D
SaluDOS!!!

NetVicious

Me he tirado 4-5 horas para resolver este problema de los malditos acentos en un BAT de una GPO

Después del típico @echo off poner chcp 1252 y escribir los bat como si nada y a escribir cómodamente los bat.

Ejemplo:
@echo off
chcp 1252
echo áéíóúñÑ

.. //\/ e t . \/ i c i o u s ..