Batch Programmierung - Verschiedene Schriftfarben in einem Fenster?
Hallo liebe gutefrage.net Community
Ich habe folgende Frage:
Ich würde gerne in einem Batch Fenster verschiedene Schriftfarben auf einem Screen haben. Aber mit dem Color Befehl ändert sich immer die komplette Schrift.
Weiß jemand wie man das realisieren kann?
Danke für eure Bemühungen
Y

3 Antworten
Schon lustig, wie sich hier die Profis damit brüsten, dass sie sehr erfahren in Batch seien, nur um dann zu sagen, dass sie keine Lösung haben.
Das geht mit Hilfe des FINDSTR-Befehls und des SET/P-Befehls.
Hier der Code einer Datei, die mehrere Farben in einem CMD-Fenster schreibt:
@echo off
:: Original author: Unknown
:: Editor: GrellesLicht28
REM To write a text before colored text, use a SET/P-command before the CALL-command.
REM To write a text between two colored texts, use a SET/P-command between two CALL-commands.
REM To write a text after all colored texts, use an ECHO-command. If you do not want to write anything after it, use "ECHO."
REM The last colored text should have "end" as third parameter.
title Colour Text
echo These are the colored texts:
echo.
call :ColorText 0a "GREEN"
set /p ".= " <nul
call :ColorText 0c "RED"
set /p ".= " <nul
call :ColorText 09 "BLUE"
set /p ".= " <nul
call :ColorText 0d "PINK"
set /p ".= " <nul
call :ColorText 0e "YELLOW"
set /p ".= " <nul
call :ColorText 08 "GRAY" end
echo.
echo.
set /p ".=Text before " <nul
call :ColorText 0a "GREEN"
set /p ".= and between green and " <nul
call :ColorText 0c "RED" end
echo. and after red.
echo.
echo.
pause
exit
:: Keep this label exactly as it is and do not change anything here!
:ColorText [%1 = Color] [%2 = Text]
set /p ".=." > "%~2" <nul
findstr /v /a:%1 /R "^$" "%~2" nul 2>nul
set /p ".={BS}{BS}" <nul
if "%3" == "end" set /p ".= {BS}{BS}" <nul
del "%~2" >nul 2>nul
exit /b
Gutefrage kann die {BS} nicht darstellen, die müssen mit Ascii-Code 08 ersetzt werden.
Zur Erklärung:
Die CALL-Befehle rufen die Schleife am Ende auf. Diese Schleife ist der Kern der Datei. Dazu komme ich gleich.
Die SET/P-Befehle zwischen CALL schreiben ein einzelnes Leerzeichen in die aktuelle Zeile, um die einzelnen Teile, die man in verschiedenen Farben schreiben will, zu trennen.
Der Mittelteil dient nur als Filler bzw. als Beispiel.
Nun die Schleife:
Zuerst erstellt das Programm eine Datei (SET/P-Befehl) mit dem Namen, den du in den CALL-Befehlen festlegst. Dieser Name ist der Text, der am Ende ausgegeben wird. "call :ColorText 0a "GREEN"" erstellt z.B. die Datei "GREEN". Mit Hilfe des Farbcodes 0a kommt grüne Schrift auf schwarzem Hintergrund raus.
Als nächstes durchsucht das Programm (FINDSTR-Befehl) die gerade erstellte Datei nach Code, welchen sie definitiv findet. Der Output dieses Befehls ist "Dateiname:Inhalt", in dem Beispiel "GREEN:.". Der Inhalt ist nur ein einziger Punkt.
Mit Hilfe des nächsten SET/P-Befehls gehen wir zwei Buchstaben in der aktuellen Zeile zurück (dazu dient das {BS} bzw. Backspace). Das erlaubt, dass man mit dem nächsten CALL-Befehl (also dem nächsten Aufruf der Schleife) den einzelnen Punkt und den Doppelpunkt (zwischen Dateiname und Inhalt) überschreibt als wären sie nie da gewesen.
wüsste ich jetzt auch nicht und ich kann batch eigentlich auch relativ gut
vlt geht das ja mit java, wenn du eclipse nicht benutzt, läuft ja auch mit cmd als textconsole
eazy peazy
0 Schwarz 1 Dunkelblau 2 Dunkelgrün 3 Blaugrün 4 Dunkelrot 5 Lila 6 Ocker 7 Hellgrau 8 Dunkelgrau 9 Blau A Grün B Zyan C Rot D Magenta E Gelb F Weiß
Beispiel:
@Echo off
:START
color C
echo swag
GoTo START
:ENDE
grad selber gemerkt, dass es analog nicht geht. Du kannst höchstens nach ner Zeit das clearen und dann wieder ändern.