h1

Echo y los caracteres especiales de redirección

mayo 18, 2009

Tengo en mente hacer un pequeño archivo por lotes (batch) para poder transformar un conjunto de imágenes (que podrían provenir de una presentación en Powerpoint) en un archivo que lea la NintendoDS (moviéndo las imágenes con el Pad) después de haberla compilado con la librería PALib.

Y me encontré con un “pequeño problema”. Quiero que el fichero por lotes genere el código en C de PALib y para ello ha de escribir alguna línea como #include <PA9.h> y esto tiene el ligero problema de que para la función echo, los símbolos “<” y “>” son de redirección y no son fácilmente imprimibles en un fichero.

Después de mucho buscar, encontré esta solución en esta web: if you wish to include any of the redirection symbols (<, >, >>, or pipe ( | )) in message, they must be enclosed in inverted commas. These inverted commas are, of course, displayed in the ECHOed message(…) a way to avoid the quotation marks being displayed by following each mark with a backspace character (ASCII 8, Ctrl-H). To include such a character you have to be writing the batch file with a text editor such as EDIT that allows the entry of such “special” characters – in the case of EDIT, you would enter Ctrl-P, Ctrl-H. For some reason, the backspace does not work if it is the last character on the line – it must be followed by something – even a space.

Así que nos fuimos al símbolo de sistema, invocamos el programa EDIT, escribimos echo #include “<“PA9.h”>” con los Ctrl+H después de cada , pero… no funcionó.

Entonces manteniendo el mismo espíritu hicimos algo sencillo: escribimos echo #include “_<“_PA9.h“_>”_, es decir, añadiendo un caracter cualquiera después de las comillas, ejecutamos un editor hexadecimal, y cambiamos el código ASCII de este caracter _ por el código ASCII del símbolo de borrado: el 08. Y así… funcionó…

Dejo el fichero “tratado” como ejemplo para descargar desde aquí. Si se edita con el Bloc de Notas, el carácter 08 ASCII aparece como un cuadrado.

Anuncios

4 comentarios

  1. Gracias! estaba buscando justo esto.


  2. Es mas sencillo anteponiendo el caracter ^ al imprimir un caracter que realiza operaciones dentro del BAT ( ej. ,=,&,| ), sin complicaciones hubiera quedado de la siguiente manera:

    echo #include ^

    Inténtalo, a mi me ha servido bastante para crear código HTML desde un Batch.

    Saludos!!


  3. graciasss!


  4. Alfredo Pulido Muchas gracias por tu aporte. Funciona excelentemente.



Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s