制作你自己的程序来做你想做的事。
与链接重复页面上的 13 个愚蠢答案不同。这会非常快。 CMD.exe 打开一个批处理文件,读取 1 行,然后关闭文件。它对每一行重复。更糟糕的使用变量意味着每次都需要重新使用环境块。
@ColourText f2 F2 *********************************
@ColourText F4 F2 Warning
@Echo ***************************************
REM ColourText.bat
REM Compiles ColourText.vb to ColourText.exe
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\vbc.exe" /target:exe /out:"%~dp0\ColourText.exe" "%~dp0\ColourText.vb" /verbose
pause
'ColourText.vb
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
使用
ColourText <ColourOfText> <ColourOfTextWhenFinished> [Text]
CLS 命令也变得有趣。不带参数的颜色命令将所有颜色重置为启动颜色。
要获得颜色代码,请将以下数字加在一起。在程序员模式下使用计算器。这些是十六进制数字。它们可以加在一起,例如 Red + Blue + FG Intensity = 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,而白色为 F0(加上 10 + 20 + 40 + 80)。白底红字是f4。
编辑
这打印<GREEN>*<RED>Warning<GREEN>*
为工作使用正确的工具。
'ColourText1.vb
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 IntPtr
Dim Ret as Integer
hOut = GetStdHandle(STD_OUTPUT_HANDLE)
Ret = SetConsoleTextAttribute(hOut, &hfA)
Console.Out.Write("*")
Ret = SetConsoleTextAttribute(hOut, &hfC)
Console.Out.Write("Warning")
Ret = SetConsoleTextAttribute(hOut, &hfA)
Console.Out.Write("*" & vbcrlf)
End Sub
End Module