Как отображать разные цвета в командной строке Windows - PullRequest
168 голосов
/ 12 января 2010

Я знаю, что команда color bf устанавливает цвета всего окна командной строки, но я хотел напечатать одну строку другим цветом.

Ответы [ 16 ]

0 голосов
/ 19 марта 2019

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * [100] * в реестре вы не можете добавить правильное значение в реестр, чтобы сделать команду "более красочной".

К счастью, глобальное значение по умолчанию может быть изменено с opt-in на opt-out. Раздел реестра в HKEY_CURRENT_USER \ Console \ VirtualTerminalLevel устанавливает глобальное поведение по умолчанию для обработки escape-последовательностей ANSI. Создайте ключ DWORD (при необходимости) и установите его значение равным 1, чтобы глобально включить (или 0, чтобы отключить`) обработку ANSI по умолчанию.

0 голосов
/ 12 июля 2017

Чтобы это работало в Windows 10, вы можете включить этот флаг: ENABLE_VIRTUAL_TERMINAL_PROCESSING.

С этим ключом реестра вы можете установить его по умолчанию

[HKCU\Console] VirtualTerminalLevel dword 0x1

0 голосов
/ 02 января 2017

Поместите следующие строки в файл с именем ColourText.bas на рабочем столе.

Imports System
Imports System.IO
Imports System.Runtime.InteropServices
Imports Microsoft.Win32

Public Module MyApplication  
Public Declare Function GetStdHandle Lib "kernel32" Alias "GetStdHandle" (ByVal nStdHandle As Long) As Long
Public Declare Function SetConsoleTextAttribute Lib "kernel32" Alias "SetConsoleTextAttribute" (ByVal hConsoleOutput As Long, ByVal wAttributes As Long) As Long
Public Const STD_ERROR_HANDLE = -12&
Public Const STD_INPUT_HANDLE = -10&
Public Const STD_OUTPUT_HANDLE = -11&

Sub Main()
    Dim hOut as Long
    Dim Ret as Long
    Dim Colour As Long
    Dim Colour1 As Long
    Dim Text As String
    hOut  = GetStdHandle(STD_OUTPUT_HANDLE)
    Colour = CLng("&h" & Split(Command(), " ")(0))
    Colour1 = Clng("&h" & Split(Command(), " ")(1))
    Text = Mid(Command(), 7)
    Ret = SetConsoleTextAttribute(hOut,  Colour)
    Console.Out.WriteLine(text)
    Ret = SetConsoleTextAttribute(hOut, Colour1)
End Sub
End Module

Сохраните его и введите в командной строке следующее.

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\vbc.exe" /target:exe /out:"%userprofile%\desktop\ColourText.exe" "%userprofile%\desktop\ColourText.bas" /verbose

На вашем рабочем столе появится файл ColourText.exe. Переместить его в папку Windows .

Чтобы использовать, вы должны использовать два кода символов для установки цвета, например 01, а не 1.

ColourText ColourOfText ColourOfTextWhenFinished Text

EG Чтобы установить синий на белый, не пропуская текст, затем красный на белый текст, заканчивая синим на сером.

ColourText F1 F1
ColourText F2 71 This is green on white

или

ColourText F1 F1
cls
ColourText F4 F4
Echo Hello
Echo Hello today
ColourText F1 F1

Также становится интересной команда CLS. Команда Color без параметров сбрасывает все цвета к начальным.

Чтобы получить код цвета, сложите следующие цифры. Используйте калькулятор в режиме программистов. Это шестнадцатеричные числа. Их можно добавить вместе, например, красный + синий + интенсивность FG = 13 = D. Поскольку 10+ не использовалось, фон будет черным. Цветовые коды ДОЛЖНЫ состоять из двух символов, например 08, а не 8.

FOREGROUND_RED = &H4     '  text color contains red.
FOREGROUND_INTENSITY = &H8     '  text color is intensified.
FOREGROUND_GREEN = &H2     '  text color contains green.
FOREGROUND_BLUE = &H1     '  text color contains blue.
BACKGROUND_BLUE = &H10    '  background color contains blue.
BACKGROUND_GREEN = &H20    '  background color contains green.
BACKGROUND_INTENSITY = &H80    '  background color is intensified.
BACKGROUND_RED = &H40    '  background color contains red.
0 голосов
/ 22 января 2013

Используйте команду цвета. Простой и встроенный.

Color 0F

черно-белое

Color 0A 

черный и зеленый

0 голосов
/ 12 января 2010

Раньше мы делали это с Коды терминала ANSI . Не уверен, что они все еще работают, но вы можете попробовать их.

0 голосов
/ 12 января 2010

Вам нужно будет отобразить последовательность escape-кода ANSI, чтобы изменить цвет текста: http://en.wikipedia.org/wiki/ANSI_escape_code

Другой очень хороший источник этих escape-кодов - http://ascii -table.com / ansi-escape-sequence.php

...