Necesito ayuda en el chat por lotes multicolor [duplicado]

Estoy usando un chat por lotes prefabricado y quiero mejorarlo con mi propio toque.

Cuando alguien en el chat diga algo, se escribirá así: [John]: Hello World

lo que quiero hacer es conseguir [John] en otro color que el resto del programa. No puedo hacer que funcione. Me encantaría que alguien me ayudara a evitar esto.

EDITAR: El call: El comando no funciona en esto. He probado diferentes lotes como colormsg y ctext. Ninguno de ellos trabaja. creo que el problema esta en >> log.dat.

Aquí está el código:

@echo off
rem: Matthew Merchant ScriptingMadness.blogspot.com
rem ###### TITLE SCREEN ############
title Batch Chat Room
echo.
echo WELCOME TO THE CHAT!
echo:
echo:
echo Commands:
echo just hit ENTER to update screen.
echo.
set /p username=What is your name?
echo %username% has joined. >> log.dat
cls
goto CHATLOOP
REM ############################




REM ########## CHAT LOOP ##########
set lastmessage=""

:CHATLOOP
cls
type log.dat
echo.
echo.
set /p message=Say:

rem set message checker value
set thismessage="%message%"


rem check for exit
if %thismessage% == "EXIT" echo %username% has left the chat room. >> log.dat
if %thismessage% == "EXIT" exit
rem -----------------

rem check for clear
if %thismessage% == "CLS" echo %username% has cleared the chat log. > log.dat
if %thismessage% == "CLS" set message=Empty
if %thismessage% == "CLS" set lastmessage="Empty"
if %thismessage% == "CLS" goto CHATLOOP
rem ------------------

rem check for same message as last time
if %thismessage% == %lastmessage% goto CHATLOOP

rem if all checks out, go ahead and post this message
echo [%username%]: %message% >> log.txt

rem save value for next test
set lastmessage="%message%"

goto CHATLOOP
REM ################################

Si todavía no entiendes lo que quiero decir. Ver arriba: quiero %username% en otro color que %message%

preguntado el 08 de marzo de 13 a las 21:03

Consulte también la esta pregunta para obtener más ayuda. -

Esos no funcionan. Todo lo que use el comando "llamar" no funcionará. También probé diferentes lotes como colormsg, creo que el problema radica en ">> log.dat". -

¿Por qué estás tan seguro de que call no funcionará? Una forma de implementar múltiples colores en su caso puede ser reemplazar su type log.dat con un método más sofisticado de mostrar el contenido del archivo. Probablemente necesitará analizar el archivo línea por línea, y en cada línea, separar el nombre de usuario del resto del contenido, luego mostrar cada uno en un color diferente. Sí, es posible que necesite aprender algo más para su problema, por ejemplo, cómo analizar archivos de texto en archivos por lotes. Pero al menos no rechaces una sugerencia con un simple "no funcionará" sin pensarlo y probarlo. -

Además, si lo notó, agregar colores a los scripts por lotes involucra técnicas muy no triviales. La gente no sugeriría eso si hubiera formas más fáciles. Por lo tanto, es posible que deba prepararse para la necesidad de adaptarse su guión a las técnicas existentes de pantalla multicolor en lugar de al revés. -

Pruebe el código usted mismo con el call. Simplemente no funciona con el >> log.dat. Y lo he intentado, de lo contrario no pediría ayuda, ¿verdad? -

1 Respuestas

no se puede hacer, este fue mi primer lenguaje de programación antes de vb.net, c # y mientras pasé 2-3 años codificando en esto, noté que el valor del color establece el color para el fondo o el texto, pero para definir qué texto desea que actúe el comando de color es - imposible - porque no es parte del comando provisto por Microsoft, recuerde que es una herramienta administrativa, no se concentraría en definir el color de una línea de texto específica ...

respondido 11 mar '13, 00:03

Se puede hacer, se ha hecho. Consulte las preguntas y respuestas vinculadas para obtener más detalles. - BDM

si, se puede hacer con el findstr dominio. Es un truco, es lento, pero funciona :-) - Jeb

Solo los Sith tratan con absolutos... - BDM

Entonces, por favor, usa el código e intenta arreglarlo porque yo no puedo de ninguna manera. - user2149978

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.