37414
16.05.2020, aktualisiert um 18:23:41 Uhr
22772
13
0
Batchdatei einzelne Zeilen farbig oder fett darstellen
Hallo,
ich suche eine Möglichkeit, mehrere unterschiedliche Zeilen einer Batchdatei in einer anderen Farbe anzuzeigen.
Mit folgendem Code kann ich grds. die Hintergrund- und Schriftfarbe ändern:
Das funktioniert! Aber um jetzt im Code dieses Fensters mit blauem Hintergrud und weißer Schrift, einzelne Zeilen in z.B. gelber Farbe darzustellen, habe ich schon eine Menge gegoogelt.
Dabei habe ich eine Menge Tipps gefunden, aber bisher hat keiner davon das richtige Ergebnis gebracht.
Hier mal ein Beispiel:
oder:
Es wurde immer dieser Code im CMD-Fenster angezeigt, obwohl eigentlich das Wort "Yellow" hätte in gelb angezeigt werden sollen.
Was mache ich falsch?
Gruß,
imebro
ich suche eine Möglichkeit, mehrere unterschiedliche Zeilen einer Batchdatei in einer anderen Farbe anzuzeigen.
Mit folgendem Code kann ich grds. die Hintergrund- und Schriftfarbe ändern:
color 9F
Das funktioniert! Aber um jetzt im Code dieses Fensters mit blauem Hintergrud und weißer Schrift, einzelne Zeilen in z.B. gelber Farbe darzustellen, habe ich schon eine Menge gegoogelt.
Dabei habe ich eine Menge Tipps gefunden, aber bisher hat keiner davon das richtige Ergebnis gebracht.
Hier mal ein Beispiel:
^<ESC^>[93m [93mYellow[0m
oder:
echo ^<ESC^>[93m [93mYellow[0m
Es wurde immer dieser Code im CMD-Fenster angezeigt, obwohl eigentlich das Wort "Yellow" hätte in gelb angezeigt werden sollen.
Was mache ich falsch?
Gruß,
imebro
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 572343
Url: https://administrator.de/contentid/572343
Ausgedruckt am: 22.11.2024 um 11:11 Uhr
13 Kommentare
Neuester Kommentar
Zitat von @37414:
Hallo,
HiHallo,
> echo ^<ESC^>[93m [93mYellow[0m
>
Es wurde immer dieser Code im CMD-Fenster angezeigt, obwohl eigentlich das Wort "Yellow" hätte in gelb angezeigt werden sollen.
Was mache ich falsch?
Windows before 10 - no native support for ANSI colors on the console
...
The ColorTool enables you to change the color scheme of the console. It's part of the Microsoft Terminal project.
...
The ColorTool enables you to change the color scheme of the console. It's part of the Microsoft Terminal project.
Schmeiss den Batch kram weg und mach es in Powershell
Nabend,
Du hast vermutlich hier gelesen: https://stackoverflow.com/questions/2048509/how-to-echo-with-different-c ... ?
Auch die Diskussion unter der ersten Antwort lesen. In Deiner Zeile
wird das ESC-Zeichen falsch eingefügt. Zuerst musst Du das vor jeder eckigen Klammer machen und zwar mit ALT+0 2 7 (die 0 2 7 auf der Zehnertastatur eintippen)
Das kann man leider im Forumseditor nicht darstellen.
geht nur ansatzweise so:
(Bitte nicht 1:1 kopieren!)
Aber man sieht das dann nur in einem gescheiten Editor.
Gruß
cykes
Was mache ich falsch?
Nimmst Du einen gescheiten Editor, bspw. Notepad++?Du hast vermutlich hier gelesen: https://stackoverflow.com/questions/2048509/how-to-echo-with-different-c ... ?
Auch die Diskussion unter der ersten Antwort lesen. In Deiner Zeile
echo ^<ESC^>[93m [93mYellow[0m
wird das ESC-Zeichen falsch eingefügt. Zuerst musst Du das vor jeder eckigen Klammer machen und zwar mit ALT+0 2 7 (die 0 2 7 auf der Zehnertastatur eintippen)
Das kann man leider im Forumseditor nicht darstellen.
geht nur ansatzweise so:
echo {ALT+027}[93m {ALT+027}[93mYellow{ALT+027}[0m
Aber man sieht das dann nur in einem gescheiten Editor.
Gruß
cykes
Probier es mal mit diesem code:
Sollte so aussehen:
Um eine bestimmt farbe zu verwenden must du dann halt immer die function call :ColorText und den code der farbe, den du von dem command color /? bekommen kannst
Zum beispiel um Lila zu schreiben:
call :ColorText D "Hallo, Ich bin Lila"
@echo off
SETLOCAL EnableDelayedExpansion
chcp 1252 > Nul
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
set "DEL=%%a"
)
echo.
echo Meine Farben
echo.
call :ColorText C " Hallo, ich bin rot"
echo.&echo.
call :ColorText A " Hallo, ich bin gruen"
echo.&echo.
call :ColorText E " Hallo, ich bin gelb"
echo.&echo.
call :ColorText C " Rot"
call :ColorText A " Gruen"
call :ColorText E " Gelb"
echo.&echo.
pause
exit
:ColorText
echo off
<nul set /p ".=%DEL%" > "%~2"
findstr /v /a:%1 /R "^$" "%~2" nul
del "%~2" > nul 2>&1
goto :eof
Sollte so aussehen:
Um eine bestimmt farbe zu verwenden must du dann halt immer die function call :ColorText und den code der farbe, den du von dem command color /? bekommen kannst
Zum beispiel um Lila zu schreiben:
call :ColorText D "Hallo, Ich bin Lila"
Ja die for und :ColorText function musst dann halt mit in deine batch kopieren. Und der code macht den text nicht wirklich Portuguisisch das ist halt bei mir so weil ich Brasilianer bin und mein Windows auf Portuguisisch ist.
Du musst die Function auch nicht ColorText nennen du kannst sie auch Farben nennen. Ich glaube das ist am einfachsten zu merken einfach diesen code am anfang vom Batch kopieren in dem du verschiedene Farben benutzen willst:
Danach kannst einfach so Farben einsetzen:
Das sieht dann so aus:
@echo off
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
set "DEL=%%a"
)
call :ColorText E " Hallo, ich bin gelb"
echo.&echo.
pause
exit
:ColorText
echo off
<nul set /p ".=%DEL%" > "%~2"
findstr /v /a:%1 /R "^$" "%~2" nul
del "%~2" > nul 2>&1
goto :eof
Du musst die Function auch nicht ColorText nennen du kannst sie auch Farben nennen. Ich glaube das ist am einfachsten zu merken einfach diesen code am anfang vom Batch kopieren in dem du verschiedene Farben benutzen willst:
@echo off
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (set "DEL=%%a")
goto :Ueberspringen
:Farben
echo off
<nul set /p ".=%DEL%" > "%~2"
findstr /v /a:%1 /R "^$" "%~2" nul
del "%~2" > nul 2>&1
goto :eof
:Ueberspringen
Danach kannst einfach so Farben einsetzen:
Call :Farben E " Ich bin gelb"
echo.&echo.
Call :Farben 4E "Ich bin gelb mit rotem Hintergund"
echo.&echo
pause
Das sieht dann so aus:
Also, normalerweise mögen es "set /p" und "choice" commands nicht das man ein Lehrzeichen vor dem Text stellt. Mit einem Trick geht es aber doch, indem man ein Backspace in eine variable rettet und diese dann im choice einsetzt:
So sollte es dann aussehen:
Quelle: Stackoverflow.com
for /f %%a in ('"prompt $H&for %%b in (1) do rem"') do set "BS=%%a"
choice /N /C JN /M "a%BS% Hier steht eine Frage? ---> (J)a, (N)ein: "
So sollte es dann aussehen:
Quelle: Stackoverflow.com