Logo

Batch: Praktische Verwendung von farbigen Konsolenfenstern

Mit dem Befehl COLOR ändert man bekanntermaßen die Vorder- und Hintergrundfarbe eines Windows-Konsolenfensters. Und wie wir gleich sehen werden, lässt sich damit mehr anstellen als einfach nur alles bunt zu machen.

Die Grundlagen

Die Farbattribute werden durch eine zweistellige Ziffer im hexadezimalen Format angegeben, wobei die erste Ziffer den Hintergrund bestimmt, die zweite den Vordergrund:

REM Farben ändern zu dunkelblauem Hintergrund mit weißer Schrift
COLOR 4F

Die Hilfe des Befehls (color /?) zeigt uns, welche Farbwerte zur Verfügung stehen:

0 = Schwarz 8 = Dunkelgrau
1 = Dunkelblau 9 = Blau
2 = Dunkelgrün A = Grün
3 = Blaugrün B = Zyan
4 = Dunkelrot C = Rot
5 = Lila D = Magenta
6 = Ocker E = Gelb
7 = Hellgrau F = Weiß

Praktische Verwendung

Das ist ja an sich schon ganz nett. Die meisten Skripter gebrauchen diese Funktion allerdings lediglich aus rein gestalterischen Gründen. Dabei lässt sich die Farbanpassung zum Beispiel prima zur Zustandsanzeige verwenden: Wurde das Skript erfolgreich abgearbeitet, ändert sich die Hintergrundfarbe zu Grün (2F). Trat ein Fehler auf, ändert sie sich zu Rot (4F). So muss man gar nicht erst in den Ausgabezeilen nach dem Resultat suchen sondern bekommt direkt farblich gezeigt, ob alles gut ging oder nicht.

Das kann dann zum Beispiel wie folgt aussehen. Der Beispielcode ist der Übersichtlichkeit halber auf ein Minimum reduziert.

REM Prüfung
IF NOT EXIST "C:\temp\" GOTO ERROR

REM Alles Ok
COLOR 2F
ECHO Das Quellverzeichnis wurde gefunden.
PAUSE && EXIT

REM Fehlerbehandlung
:ERROR
COLOR 4F
ECHO Das Quellverzeichnis existiert nicht.
PAUSE && EXIT

Ich reize diese Möglichkeit manchmal aus, indem ich noch einen Zwischenstatus Gelb (6F) verwende, der anzeigt, dass die Hauptaufgabe zwar erfolgreich erledigt wurde, allerdings ein kleiner Nebenschritt zur Nachbearbeitung fehlgeschlagen ist.

Weitere Tipps

Wenn in einem Batch-Skript die Farbe häufiger gewechselt werden soll, lohnt es sich, den Befehl samt Farbcode als Variable festzulegen. Das erleichtert die Handhabung, denn ihr müsst euch dann nur noch den Variablennamen merken und später habt ihr weniger Aufwand wenn sich der gewünschte Farbwert mal ändern sollte, denn ihr müsst ihn nur noch an einer Stelle ändern:

REM Deklaration des Befels
SET colErr=COLOR 4F
[...]
REM Hier soll die Farbe geändert werden
%colErr%

Um die Farben wieder auf den Standardwert zurück zu setzen, genügt der Aufruf des Befehls COLOR ohne Angabe von Parametern.

Übrigens wird innerhalb einer Batch-Ausführung der ERRORLEVEL auf 1 gesetzt, sollten für Vorder- und Hintergrund dieselben Farben gesetzt werden.



Sag' deine Meinung