[DUDA][BATCH] Con la funcion CECHO :S

Iniciado por FranciskoAsdf, 29 Diciembre 2009, 23:55 PM

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

FranciskoAsdf

Hola Saludos a todos, espero esten bien :)

En este mismo subforo encontré una función llamada CECHO que es capaz de colorear las palabras en un archivo .bat.-

A Ver el codigo de esa funcion es el siguiente :

Código (dos) [Seleccionar]
:::::::::::::::::::::::::::::::::::::::::::::::::::::
REM  Modulo Generador de Colores
:CECHO
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
PUSHD "%USERPROFILE%\"
IF EXIST COLOR DEL /F /Q /A COLOR > NUL 2>&1
IF EXIST COLOR\ RD /S /Q COLOR > NUL 2>&1
MD COLOR
CD COLOR

SET "C="
SET "L1="
SET "L2="
SET "L3="

SET "C=%~1"
ECHO.!C!|FINDSTR /R /I "\<[0-9A-F][0-9A-F]\>" > NUL || (
ECHO. DEBE ESPECIFICARSE UN COLOR HEXADECIMAL.
ECHO. COLOR /?
EXIT /B 1
)
SET /A "TAM=0"
SET "L1=%~2"
SET "L2=%~3"
SET "L3=%~4"
IF NOT DEFINED L2 (
SET "L1="
SET "L2=%~2"
SET "L3="
)
CALL :CLEAN C
CALL :CLEAN L1
CALL :CLEAN L2
CALL :CLEAN L3
IF DEFINED L2 CALL :LEN "%L2%"
IF %TAM% GTR 150 (
ECHO.
ECHO.TEXTO COLOREADO REDUCIDO A 150 CARACTERES DE LONGITUD
ECHO.
)
IF DEFINED L2 SET "L2=%L2:~0,150%"
IF DEFINED L2 ECHO.%L3%>"%L2%"
0>NUL SET /P "_=%L1%"
FINDSTR.EXE /A:%C% /R "^" "*"
POPD
IF EXIST "%USERPROFILE%\COLOR" DEL /F /Q /A "%USERPROFILE%\COLOR" > NUL 2>&1
IF EXIST "%USERPROFILE%\COLOR\" RD /S /Q "%USERPROFILE%\COLOR" > NUL 2>&1


:LEN
SETLOCAL ENABLEEXTENSIONS DISABLEDELAYEDEXPANSION
SET /A CONTL=0
SET "WORDL=%~1"
:_LOOPL
IF NOT DEFINED WORDL (GOTO :_ENDL)
SET "WORDL=%WORDL:~1%"
SET /A CONTL +=1
GOTO :_LOOPL
:_ENDL
ENDLOCAL & SET /A TAM=%CONTL%
EXIT /B 0


:CLEAN
::deja solo caracteres dentro del rango a-z 0-9
::y espacio en el contenido de las variables.
::version 2.0
::Version modificada con mas caracteres
::solo para trabajar con funcion cecho.
::Los caracteres agregados son: # $ + - =   @
::Recibe un parametro con el nombre de la variable
::que se quiere filtrar su contenido.
::Ejemplo:
::call :clean nombreDeMiVariable
::autores: Matt Alvariz , Carlos
 @SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
 @SET "V=%*"
 @SET "S=!%V%!"
 @IF NOT DEFINED S EXIT /B 1
 @SET "V="
:LOOP
 @FOR %%* IN (
" " 0 1 2 3 4 5 6 7 8 9 A B C D E F G
H I J K L M N O P Q R S T U V W X Y Z
# $ + - =   @
) DO   @IF /I "!S:~0,1!" EQU "%%~*" SET "V=!V!!S:~0,1!"
 @SET "S=!S:~1!"
 @IF DEFINED S GOTO :LOOP
 @(ENDLOCAL & SET %*=%V%)
 @SETLOCAL ENABLEEXTENSIONS
 @EXIT /B 0
REM Fin modulo generador de colores
 ::::::::::::::::::::::::::::::::::::::::::::::::::::


y se usa de la siguiente forma:

Código (dos) [Seleccionar]
Call :Cecho ColorHexaDecimal "Mi Frase a colorear"


por ejemplo :

Código (dos) [Seleccionar]
Call :Cecho 7C "Mi Nombre es Francisco xD"

pero por ejemplo si "ejecuto" ese codigo en un batch, al final de cada frase salen dos puntos ":" y nose como se pueden quitar, ya que se ven fuera de lugar segun la frase que uno está utilizando :S, y esa es mi duda ¿Como puedo hacer para que no salgan los ":" al final de cada frase o palabra?


Muchas Gracias de ante mano y espero me pueda ayudar.

Saludos :)!
Asdf debería ser algún tipo de función.

____________________

#1
Una forma es modificando findstr.exe

FranciskoAsdf

pero como ? si me puedieras ayudar un poco más, porque así quedo en las mismas :(
Asdf debería ser algún tipo de función.

____________________

mejor usa el comando txtcolor


@echo off
setlocal enableextensions enabledelayedexpansion
if not exist "txtcolor.exe" (call :txtcolor)
txtcolor.exe 1E 1 "Text b blue, f yellow with crlf"

for /l %%b in (0,1,15) do (
call :Dec2Hex %%b b
for /l %%f in (0,1,15) do (
call :Dec2Hex %%f f
txtcolor.exe !b!!f! 0 " # "
)
txtcolor.exe 00 1 ""
)

pause
Goto :eof

:Dec2Hex
setlocal enableextensions
(set hexabc=0123456789ABCDEF)
set "___="
set /a "n=%1"
:dec2Hex_
set /a "m=n%%16"
set "___=!hexabc:~%m%,1!!___!"
if %n% geq 16 (set /a "n/=16" & goto :dec2Hex_)
endlocal & set "%2=%___%"
goto :eof

:txtcolor
Echo.Const W=^2>t.vbs&Echo.Set o=WScript.StdOut>>t.vbs
For %%b In (
"4D53434600000000BA030000000000002C000000000000000301010001000000000000"
"004900000001000100D20700000000000000009E3B8A662000747874636F6C6F722E65"
"78650063EB078D6903D207434BDD544B681341189E6D538D35352AE2030F4EC44A458D"
"55113C88D4C75A85AA5B5A2F8AD66D324997A6BB7177A2297868498B9450ECA182871E"
"7AF0E0C183878AA98844DA83828288074FE24549B1A00785452AEB3F8F3C5A7C54BD39"
"F0E77F7FF3CD9FD9397976045523847C209E87500E89D5847EBFFA40566C7AB0024D2C"
"7B1ECA292DCF43ED5D868393B615B7F51E1CD14DD3A2B893603B6562C3C4474FB7E11E"
"2B4AC27575B55B2486A622D4A254CDC37D8B82D5CB9525F3624DABE167250896EC985D"
"25782354D6A851C4A70F237E2E5EB8B25297145F1701EFC022CEFAA76B0C70F7FF221F"
"A6244D8B644036540BDE950B202E86A33AD5C17EA188C04BA6E78F864D23FFB73CCF0C"
"BDEB9F6D006324ABFA33AE2F38180016593590C9FBB2FED6C228789969DF903AC7637E"
"16EB2BC6DCAC3A9771157E6782A3F9C17C7060032A77071F295AE19C289EB9C413505E"
"5559DEB4B07C872867B97D15B9CC6385A7EBCAE9B5909EA945F2CACE0498C586F3A146"
"04D80FA7EDFE8CA25FEE995704C53298E865C7630D5F7983CBCC8F254E93EC8F6B9D64"
"95AD6C28190E12280D6AB2767E3E52CC33D47ED7637CAE8D0BE48C8B8203AB8AB6121C"
"A86124328CCE17CFF3B44258617C3E0FAB6FB4ACFA592B6C55F830FBDFB24F5684362A"
"9259207BD21D525F0F3E9530FC544B71139A616EAE062CE8789D455A0E31BBC04E0BCC"
"82F7D5F702EA45690EEB99E5E75553BCCAC747CCE7F374AA747FD6B0FB9313439BCDB1"
"0F0FB091025D3778979F776985EB0263589DD578B5360CDB0DAB2EC89C56E8E5D9358C"
"02CC010462E7BF791E9FDAA7ACFA492B5C1000B0B5573F86D9E5F1EAC7A5BE25F56DA9"
"A7A57E22F533A9EF487D57EA09A973523FC48B79FBFE9755EFD43B08AE084DD38895B0"
"EC304913DCA947BAE3B69532A30D8D3B8F6D8B5936A970E181374C7A8A5C69314CD2D0"
"B86BF736BC997611CC5EB4CDB50BF05FE1B21D08897771AE22761562D3F8C7DCD6410E"
"836C07D9077210A419A41D8480A442A26E08F44D907BA17FEBEB712E476C1A8E2612E0"
"38D44E10130CC349478DB841B959B4204B2D56C6671103A3236299D4B612B124733A1C"
"423BF464B283F626090FC409EDD10D53B7E30EF8240D30DDC4364962EF1EB96333A16D"
"347A5C37A30922DC2396E95809D216B109310FA76231629F30631624DB4AC97698FA21"
) Do >>t.vbs (
Echo.For b=1To 69Step 2:o.Write Chr(Clng("&H"^&Mid(%%b,b,W^)^)^):Next)
For %%b In ("4A6DA33345591BFA0E"
) Do >>t.vbs (
Echo.For b=1To 17Step 2:o.Write Chr(Clng("&H"^&Mid(%%b,b,W^)^)^):Next)
Cscript /Nologo t.vbs > txtcolor.ex_
Del /f /q /a t.vbs >nul 2>&1
Expand -r txtcolor.ex_ >nul 2>&1
Del /f /q /a txtcolor.ex_ >nul 2>&1
Goto :Eof


bolivianito


FranciskoAsdf

gracias ______________________ me funcionó muy bien ^^*!
Asdf debería ser algún tipo de función.