Wiem, że color bf
polecenie ustawia kolory całego okna wiersza poleceń, ale chciałem wydrukować jedną linię w innym kolorze.
217
Wiem, że color bf
polecenie ustawia kolory całego okna wiersza poleceń, ale chciałem wydrukować jedną linię w innym kolorze.
Odpowiedzi:
Użyj sekwencji ucieczki ANSI.
Windows przed 10 - brak natywnej obsługi kolorów ANSI na konsoli
W przypadku wersji Windows poniżej 10 konsola poleceń Windows domyślnie nie obsługuje kolorowania wydruków. Możesz zainstalować Cmder , ConEmu , ANSICON lub Mintty (domyślnie używane w GitBash i Cygwin), aby dodać obsługę kolorowania do konsoli poleceń Windows.
Windows 10 - Kolory linii poleceń
Począwszy od systemu Windows 10 konsola Windows domyślnie obsługuje sekwencje specjalne ANSI i niektóre kolory. Funkcja dostarczona z aktualizacją Threshold 2 w listopadzie 2015 r.
Dokumentacja MSDN
Aktualizacja (05-2019): ColorTool umożliwia zmianę schematu kolorów konsoli. Jest to część projektu Microsoft Terminal .
Próbny
Polecenie wsadowe
win10colors.cmd
Został napisany przez Michele locati :źródło
.cmd
lub.bat
- oba powinny działać. Ale myślę, że wiem, dlaczego to nie działa: wydaje się, że symbol ucieczki został usunięty podczas wysyłania do StackOverflow. Proszę nie kopiować treści z mojej odpowiedzi, zamiast tego użyj treści z tego miejsca: gist.githubusercontent.com/mlocati/…ESC
w notatniku ++ ... Możesz to zrobić za pomocą kodów ALT za pomocą klawiatury numerycznej i lewego klawisza ALT:L-ALT
+0
+2
+7
ESC
znak w pliku wsadowym w następujący sposób:for /F %%a in ('echo prompt $E ^| cmd') do set "ESC=%%a"
Jest to samodzielnie skompilowana hybryda bat / .net (powinna zostać zapisana jako
.BAT
), której można używać w dowolnym systemie, w którym zainstalowano platformę .net (rzadko można zobaczyć okna bez architektury .NET nawet w przypadku najstarszych XP / 2003 instalacje). Używa kompilatora jscript.net, aby utworzyć plik exe zdolny do drukowania ciągów o innym kolorze tła / pierwszego planu tylko dla bieżącej linii.Oto komunikat pomocy:
Przykład :
coloroutput.bat -s "aa\nbb\n\u0025cc" -b 10 -f 3 -n -e
Możesz także znaleźć ten skrypt tutaj .
Możesz także sprawdzić funkcję koloru Carlosa -> http://www.dostips.com/forum/viewtopic.php?f=3&t=4453
źródło
To nie jest świetna odpowiedź, ale jeśli wiesz, że docelowa stacja robocza ma Powershell, możesz zrobić coś takiego (przy założeniu skryptu BAT / CMD):
Edycja: (teraz prostsze!)
To stara odpowiedź, ale pomyślałem, że trochę wyjaśnię i uproszczę
PowerShell jest teraz zawarty we wszystkich wersjach systemu Windows od 7. Dlatego składnię tej odpowiedzi można skrócić do prostszej postaci:
-fore
zamiast-foregroundcolor
-back
zamiast-backgroundcolor
echo
(zamiast tworzyć osobny plik wsadowy jak wyżej).
Przykład:
Więcej informacji:
Pełna lista kolorów i więcej informacji jest dostępna w
- dokumentacji PowerShell dla
Write-Host
źródło
Windows 10 - TH2 i nowszy:
(alias Wersja 1511, kompilacja 10586, wydanie 2015-11-10)
W wierszu polecenia:
Używanie rzeczywistych klawiszy: echo Ctrl+ [
[32m HI
Ctrl+[[0m
EnterPowinieneś zobaczyć zielone „HI” poniżej.
Numery kodów można znaleźć tutaj:
Notatnik:
Aby zapisać to w notatniku, możesz wpisać w niego ESC, używając: Alt+
027
za pomocą klawiatury numerycznej, a następnie[32m
części. Kolejna sztuczka, gdy byłem na laptopie, przekieruj powyższą linię do pliku, aby rozpocząć, a następnie wytnij i wklej:źródło
\033
ale nie ... jak mogę to zrobić w Javie?Możesz po prostu tworzyć pliki o nazwie słowa do wydrukowania, używa findstr, który może drukować w kolorze, a następnie usuwa plik. Spróbuj tego przykładu:
Uruchom,
color /?
aby uzyskać listę kolorów.źródło
Możesz użyć ANSICON, aby włączyć kody terminali ANSI w starszych wersjach systemu Windows. Istnieją wersje 32- i 64-bitowe, których użyłem w Windows XP i Windows 7.
źródło
Zirytował mnie również brak odpowiedniego kolorowania w cmd, więc zacząłem tworzyć cmdcolor . To tylko standardowe proxy, które szuka ograniczonego zestawu sekwencji kontrolnych ANSI / VT100 (innymi słowy, jak w bash), tj
echo \033[31m RED \033[0m DEFAULT | cmdcolor.exe
.Użycie i pobieranie .
źródło
cmdcolor.exe; PE32 executable for MS Windows (console) Intel 80386 32-bit
upx
. Czy możesz skontaktować się ze mną przez e-mail?Patrzyłem na to, ponieważ chciałem wprowadzić kilka prostych kolorów tekstu do pliku wsadowego Win7. Właśnie to wymyśliłem. Dzięki za pomoc.
źródło
Istnieje już zaakceptowana odpowiedź z ponad 250 głosami pozytywnymi. Przyczyną, dla której wciąż uczestniczę, jest to, że
escape
znaki wymagane do echa nie są akceptowane przez wielu redaktorów (używam np. MS Code), a wszystkie inne rozwiązania wymagają oprogramowania innych firm (inne niż domyślne).Obejście z użyciem tylko prostych poleceń wsadowych jest używane
PROMPT
zamiastECHO
.PROMPT
Polecenie przyjmujeescape
postać w sposób dowolny-editor przyjazne jako$E
sekwencję znaków. (Wystarczy wymienićEsc
w kodach ASCII ewakuacyjne ) z$E
.Oto kod demonstracyjny:
UWAGA: Jedyną wadą jest to, że ta technika koliduje z ustawieniami kolorów cmd użytkownika (
color
polecenie lub ustawienia), jeśli nie są wyraźnie znane.- Mam nadzieję, że to pomaga, ponieważ jest to jedyne możliwe do przyjęcia rozwiązanie z powodów wymienionych na początku. -
EDYTOWAĆ:
W oparciu o komentarze dołączam kolejny fragment inspirowany @Jeb. To:
ECHO
poleceńPROMPT
wartość lokalnąECHO
wydruku nieuchronnie wpływa naPROMPT
kolor, więc i tak trzeba zresetować kolorźródło
for /F "delims=#" %%E in ('"prompt #$E# & for %%E in (1) do rem"') do set "\e=%%E"
echo
używanych w batcolours / echo.bat ”?set ASCII27=←
zfor /F "delims=#" %%E in ('"prompt #$E# & for %%E in (1) do rem"') do set "ASCII27=%%E"
. Wykorzystuje to znak zmiany znaczenia utworzony przez polecenie zachęty, bez zmiany pytania na stałe (ponieważprompt
polecenie jest wykonywane w procesie potomnym). Btw. Twójechos.bat
potencjał optymalizacji ...Dodaję odpowiedź, aby rozwiązać problem zauważony w niektórych komentarzach powyżej: te kody kolorów Inline mogą źle zachowywać się w pętli FOR (w rzeczywistości w dowolnym bloku kodu w nawiasach). Poniższy kod .bat pokazuje (1) użycie wbudowanych kodów kolorów, (2) awarię kolorów, która może wystąpić, gdy wbudowane kody kolorów są używane w pętli FOR lub w nawiasowym bloku kodu, oraz (3) rozwiązanie problem. Po uruchomieniu kodu .bat testy 2 i 3 wykazują awarię kodu koloru, a test 4 nie wykazuje awarii, ponieważ implementuje rozwiązanie.
[EDIT 2020-04-07: Znalazłem inne rozwiązanie, które jest prawdopodobnie bardziej wydajne niż wywołanie podprogramu. Umieść frazę FINDSTR w nawiasach, jak w następującym wierszu:
ENDEDIT]
Uwaga: Z mojego (ograniczonego) doświadczenia problem z kodem koloru objawia się dopiero po przesłaniu danych wejściowych do FINDSTR wewnątrz bloku kodu. W ten sposób następujący .bat odtwarza problem. Możliwe, że problem z kodem koloru jest bardziej ogólny niż po instalacji w FINDSTR. Jeśli ktoś może wyjaśnić naturę problemu i jest lepszy sposób na jego rozwiązanie, byłbym wdzięczny.
źródło
możesz użyć cechyo. Możesz również użyć go do osadzenia bezpośrednio w skrypcie, dzięki czemu nie musisz nosić ze sobą plików .com ani .exe
http://www.codeproject.com/Articles/17033/Add-Colors-to-Batch-Files
źródło
Właśnie przekonwertowałem z Win 7 Home na Win 10 Pro i chciałem zastąpić partię, do której dzwonię z innych partii, aby wyświetlić echo informacji w kolorze. Przeglądając to, co omówiono powyżej, używam następujących, które bezpośrednio zastąpią moją poprzednią partię. UWAGA dodanie do wiadomości „~”, aby można było używać wiadomości ze spacjami. Zamiast zapamiętywać kody, używam liter dla potrzebnych kolorów.
Jeśli% 2 zawiera spacje, wymaga „...”% 1 Mocne kolory na czarnym tle: R = Czerwony G = ZIELONY Y = ŻÓŁTY W = BIAŁY
źródło
Musisz zmienić sekwencję kodu ucieczki ANSI, aby zmienić kolor tekstu: http://en.wikipedia.org/wiki/ANSI_escape_code
Innym bardzo dobrym źródłem tych kodów ucieczki jest http://ascii-table.com/ansi-escape-sequences.php
źródło
Umieść następujące wiersze w pliku o nazwie
ColourText.bas
na pulpicie.Zapisz go i wpisz następujące polecenie w wierszu polecenia.
Plik o nazwie ColourText.exe pojawi się na pulpicie. Przenieś go do folderu Windows .
Aby użyć, musisz użyć dwóch kodów znaków, aby ustawić kolor, np .
01
Nie1
.EG Aby ustawić kolor niebieski na białym, nie przekazując żadnego tekstu, a następnie kolor czerwony na białym, kończąc na kolorze niebieskim na szarym.
lub
CLS
Ciekawe staje się także polecenie.Color
polecenie bez parametrów resetuje wszystkie kolory do kolorów początkowych.Aby uzyskać kod koloru, dodaj następujące liczby razem. Użyj kalkulatora w trybie programisty. To są liczby szesnastkowe. Można je dodawać razem, np. Czerwony + niebieski + intensywność FG = 13 = D. Ponieważ 10+ nie zostało użyte, tło będzie czarne. Kody kolorów MUSZĄ składać się z dwóch znaków, np .
08
Nie8
.źródło
Aby uzyskać tej pracy w systemie Windows 10, można włączyć tę flagę:
ENABLE_VIRTUAL_TERMINAL_PROCESSING
.Za pomocą tego klucza rejestru można to ustawić domyślnie
[HKCU\Console] VirtualTerminalLevel dword 0x1
źródło
Alternatywą jest użycie NodeJS .
Oto przykład:
I to jest wynik:
źródło
Jak powiedział Glenn Slayden w tej odpowiedzi , możesz dodać do rejestru odpowiednią wartość, aby cmd był „bardziej kolorowy”.
źródło
Nadawanie kolorom instrukcji dziennika w PowerShell nie jest wielkim przyjacielem. możesz użyć
-ForegroundColor
parametru.Aby napisać wiadomość potwierdzającą.
Aby napisać komunikat o błędzie.
Aby napisać komunikat o postępie .
źródło
źródło
%ESC%
jest pusty, więc to nie zadziała.echo !white!
ustawia kolor na biały. Aby powrócić do domyślnych kolorów (bez względu na ustawienia użytkownika):color
polecenie bez parametrów to robi.Robiliśmy to z kodami terminali ANSI . Nie jestem pewien, czy nadal działają, ale możesz je wypróbować.
źródło
Możesz użyć polecenia koloru, aby zmienić kolor całej konsoli
Jest czarno-biały
Jest czarno-zielony
źródło