Mostrar Diferentes Colores en Archivo Batch (Bat MS-DOS)

Iniciado por 123WAYO, 25 Marzo 2011, 15:49 PM

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

123WAYO

Uy muvhas gracias voy a tratar de hacerlo y luego te cuento!!

SuperDraco

Cita de: bolivianito en 27 Marzo 2011, 18:36 PM
Es facil de realizarlo, podes usar la herramienta "Colous" tambien, usando su parametro "Readkey", que pausa el programa hasta presionar una tecla, la tecla es guardada en %errorlevel%, pero solo su codigo ascii.

ejemplo codigo ascii
@   igual a  64  (alt+64 es @)
A   igual a  65
B   igual a 66
...etc...


El [ESC] es 27, quedaria por usar "Colous READKEY" como opcion ya que estás usando esa herramienta.

Saludos


Bolivianito, puedes explicar tambien como hacerlo pero con un readkey$ (Sin pausar)

Nunca he llegado a entenderlo :/ es necesario un FOR creo?

Gracias por la explicaciond e antes a mi tambien me ha servido, saludos!
No he vuelto, solo estoy de paso.

bolivianito

el readkey$ tambien pausa, solo que en vez de devolver numeros en errorlevel, devuelve el caracter, y lo tienes que leer usando for, o redirijiendo la salida a un archivo o parecido, pero que nada, es con for.


Y para que no se pause, se utiliza "Colous Keypress"
Es facil usarlo, es igual que el anterior, solo que no pausa el script, en caso de que haya tocado una tecla, el errorlevel será el codigo ascii del caracter, si no se toco nada, el errorlevel queda en valor 0.


Pero depende el uso que le dés, porque ese parametro funciona asi:
Citar
>Keypress
  >>si se está tocando una tecla en este momento...
       Tiro el valor ascii del caracter presionado y cierra colous

  >>si No se está tocando una tecla en este momento...
       Cierra colous
osea, tendria que poner ese parametro dentro de un bucle y estar constantemente comprobando si se toco una tecla....

Ésto es útil solo en algunos casos, depende el uso, por ejemplo en los juegos es muy buena ésta implementacion.






Acá un ejemplo:
@echo off
colous cursoroff
:://defino un contador, para que muestre que el script no está pausado
Set contador=0

:BUCLE
Colous 12 0 1,1 %contador%
set /a contador+=1
                =====================
colous keypress
if not %errorlevel%==0 (
Colous 7 0 1,2 "Presionando una tecla..."
) else (
::Borro el texto si no está presionando tecla.
Colous 0 0 1,2 "                                        "
)


GOTO:BUCLE



Saludos

SuperDraco

Muy buen ejemplo del colous!!

Me encanta, por unos segundos el CMD parece interactivo xDDD
No he vuelto, solo estoy de paso.

123WAYO

Una pregunta mas... :)
Es que creo que ya lo pregunté pero nadie me supo decir :(
En mi trabajo no hay impresoras de Matriz de Puntos y los batch solo imprimen en este tipo de impresoras, hay alguna manera que yo pueda imprimir (comando print) desde un archivo bat a una impresora laser (No de Matriz de Puntos) por ejemplo a una Epson que está conectada directamente en mi computadora o mejor aún a una impresora Laser que se encuentra en la red????
Gracias por su ayuda y comentarios!!!!

123WAYO

hola con respecto a esto que publicaste:
Esta buenísimo si funciona si pongo por ejemplo:
If %errorlevel%==27 (goto:exit) else (goto:MENU)
Entonces sale de la Aplicacion pero si en el scrip pongo por ejemplo:
If %errorlevel%==27 (goto:exit) else (goto:MENU)
If %errorlevel%==49 (goto:registro) else (goto:MENU)

Solo sigue la primera orden, ya la segunda no la toma en cuenta :( que hago???



**********************************************

Es facil de realizarlo, podes usar la herramienta "Colous" tambien, usando su parametro "Readkey", que pausa el programa hasta presionar una tecla, la tecla es guardada en %errorlevel%, pero solo su codigo ascii.

ejemplo codigo ascii
@   igual a  64  (alt+64 es @)
A   igual a  65
B   igual a 66
...etc...


El [ESC] es 27, quedaria por usar "Colous READKEY" como opcion ya que estás usando esa herramienta.

puedes buscar las tablas de valores por google.




Acá un ejemplo de un menu, lo hice sencillo para que lo entiendas:

Código:
@echo off
goto:MENU2
::dirijo al menu 2 para hacer la prueba de [ESC]


:MENU_PRINCIPAL
cls
Echo menu principal
Echo Opcion 1
Echo Opcion 2
Pause>nul
Exit





:MENU2
cls
Echo Este es un submenu
Echo Presione [ESC] para volver atras
==========================
Colous readkey
If %errorlevel%==27 (goto:MENU_PRINCIPAL) else (goto:MENU2)
::27 es [ESC] en ASCII
==========================


Saludos

http://foro.elhacker.net/scripting/mostrar_diferentes_colores_en_archivo_batch_bat_msdos-t322816.0.html#ixzz1IBu2f6e0

bolivianito

Citarhola con respecto a esto que publicaste:
Esta buenísimo si funciona si pongo por ejemplo:
If %errorlevel%==27 (goto:exit) else (goto:MENU)
Entonces sale de la Aplicacion pero si en el scrip pongo por ejemplo:
If %errorlevel%==27 (goto:exit) else (goto:MENU)
If %errorlevel%==49 (goto:registro) else (goto:MENU)

Solo sigue la primera orden, ya la segunda no la toma en cuenta  que hago???

ahi está el problema, en el else, tendrias que sacarlo, y poner el "goto:MENU" a lo ultimo despues de las comprobaciones de tecla (If...), ya que la condicion sea falsa o verdadera redirije a otro menu(o sale del programa) y no deja comprobar las otras condiciones IF...


Saludos y espero haberme explicado bien.

123WAYO

Uy y eso en ejemplo como sería???
Por fa.. gracias