Kolory w CMD – praktyczne zastosowanie

Zmiana domyślnej kolorystyki CMD to dla jednych zwykła kwestia estetyczna, dla innych sposób na podkreślenie swojej indywidualności (być może podkreślenie, że jest się geek’em). Zmiana kolorów w skrypcie może mieć jednak bardzo praktyczne zastosowanie.

Jak zmienić kolory w bieżącym oknie CMD?
Do zmiany kolorów w aktywnym oknie CMD lub w bieżącym skrypcie służy polecenie „color”. W czasach popularności filmu Matrix obowiązkowo ustawiało się zielone napisy na czarnym tle i w hołdzie dla braci Wachowskich taką kolorystykę stworzymy poleceniem:

Color 0a


Po słowie „color” podajemy jedną lub dwie cyfry  heksadecymalne. Jeśli podamy jedną, zmienimy tylko kolor czcionki. Jeśli podamy dwie, to pierwsza będzie oznaczała tło, a druga kolor czcionki. Oto możliwe wartości:

0 = Czarny
1 = Niebieski
2 = Zielony
3 = Błękitny
4 = Czerwony
5 = Purpurowy
6 = Żółty
8 = Szary
9 = Jasnoniebieski
A = Jasnozielony
B = Jasnobłękitny
C = Jasnoczerwony
D = Jasnopurpurowy
E = Jasnożółty

Praktyczne zastosowanie #1: skupienie uwagi i podkreślenie ważności

Wspominając mój artykuł o bezpiecznych plikach wsadowych, w którym mówiłem jak zabezpieczyć swoje skrypty przed pechowym kliknięciem (komentarze, pause, timeout ) albo zwrócić uwagę użytkownika (komentarz i oczekiwanie na kliknięcie klawisza) dzisiaj zaproponuje bardzo tani, ale sprawdzony chwyt: pokolorujmy komunikat tak, aby użytkownik zechciał go przeczytać:

@echo off
color 9e
echo Startuje instalacja nowego Adobe Acrobat Reader.
pause

Jeśli Wasi użytkownicy przestali reagować na czarne okienko, pokolorujmy je na czerwono, tak aby instynktownie wzbudzić w nich lęk 🙂

@echo off
color 4e
echo Startuje instalacja nowego klienta VPN.
echo.
echo Komputer zostanie uruchomiony ponownie!
echo.
Pause

Praktyczne zastosowanie #2: Rozpoznanie wyniku – zielony to dobrze, a czerwony źle 🙂
A może warto, aby kolor okienka był zależny od jakiegoś warunku? Na przykład od tego, czy na komputerze znajduje się dany plik:

@echo off
if exist %systemroot%\System32\speceit.dll (color 26) else (color 4e)
echo Jaki kolor, taki wynik.
echo ..dalsza czesc skryptu……
pause

..albo w zależności od błędu zwróconego przez poprzedni skrypt /program:

@echo off
if %errorlevel% 0 (color 26) else (color 4e)
echo Jaki kolor, taki wynik.
echo ..dalsza czesc skryptu……
pause

Oczywiście istnieje tu mnóstwo możliwości: kolorowanie na czerwono wyłącznie gdy wystąpi błąd, wielokrotna zmiana koloru w trakcie działania skryptu itd. itp.. Jeżeli znaliście polecenie color, to pewnie przestaliście czytać na samym początku. Jeśli nie mieliście pomysłu jak praktyczne zastosować zabawę kolorami – mam nadzieję, że kogoś udało mi się zainspirować 🙂

Łukasz Skalikow

Obecnie Manager IT. Przez lata byłem Inżynierem systemów. Jestem entuzjastą i specem od vSphere, Windows serwer, GPO. Od zawsze byłem zwolennikiem wiersza poleceń i automatyzacji. Obecnie, ze względu na pracę, rodzinę i wyjazdy służbowe, dużo mniej udzielam się na blogu, ale mam nadzieję, że pośród kilkuset porad opublikowanych na spece.it, wiele osób znajdzie dla siebie coś przydatnego :)

Przeczytaj także...

4 komentarze

  1. Szopen napisał(a):

    cmd /K color 0a

  2. Lukasz napisał(a):

    jak domyślnie przez GPO zmienić color CMD na „0A” aby na kazdym serwerze gdzie zaloguje się Administrotor było takie ustawienie CMD oraz jak zmienić domyślną czcionkę CMD i jej wielkość poprzez GPO?

  3. gajowy napisał(a):

    Fajna sprawa z tymi kolorami, ale mam jeszcze takie pytanie: jak zmienić komunikat wyświetlany przez komendę pause z „Aby kontynuować, naciśnij dowolny klawisz” na np. „Aby zakończyć pracę, naciśnij dowolny klawisz”. Oczywiście można przed pause dać echo „mój_komunikat” ale dwa komunikaty po sobie są trochę mało czytelne 🙂

Dodaj komentarz