我有一个批处理文件如下:
myfile.bat
:: This is a sample batch file
@echo off
echo change directory to d: <---How to change color of only this line (comments lines)
CD d:\
...
答案 0 :(得分:1)
在这个问题发生6个月后问了一个几乎完全相同的问题,之后杰克提供了一个很好的答案:how to have multiple colors in a batch file?
他的答案允许在一行上打印多种颜色!
以下是他的解决方案作为独立批处理文件的改编,可用作批处理彩色打印的实用程序。要在白色背景上以红色文字打印Hello world!
,您可以使用call colorText f4 "Hello world!"
。请参阅代码中的注释以获取完整的文档和限制。
@echo off
:ColorText Color String
::
:: Prints String in color specified by Color.
::
:: Color should be 2 hex digits
:: The 1st digit specifies the background
:: The 2nd digit specifies the foreground
:: See COLOR /? for more help
::
:: String is the text to print. All quotes will be stripped.
:: The string cannot contain any of the following: * ? < > | : \ /
:: Also, any trailing . or <space> will be stripped.
::
:: The string is printed to the screen without issuing a <newline>,
:: so multiple colors can appear on one line. To terminate the line
:: without printing anything, use the ECHO( command.
::
setlocal
pushd %temp%
for /F "tokens=1 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
<nul set/p"=%%a" >"%~2"
)
findstr /v /a:%1 /R "^$" "%~2" nul
del "%~2" > nul 2>&1
popd
exit /b
答案 1 :(得分:0)
没有内置的方法可以做到这一点。我建议你自己写一个小帮手程序,它可以改变文本的颜色属性,也可以写一些具有特定颜色属性的文本。
在C#中,这可能如下所示:
using System;
class SetConsoleColor {
static void Main(string[] args) {
if (args.Length < 3) {
Console.Error.WriteLine("Usage: SetConsoleColor [foreground] [background] [message]");
return;
}
Console.ForegroundColor = (ConsoleColor)Enum.Parse(typeof(ConsoleColor), args[0], true);
Console.BackgroundColor = (ConsoleColor)Enum.Parse(typeof(ConsoleColor), args[1], true);
Console.WriteLine(args[2]);
Console.ResetColor();
}
}
随意移植到C或您喜欢的其他语言;这对我来说是一个最快的方式,在与50线C怪物挣扎之后仍然无效; - )。
答案 2 :(得分:0)
这是执行您想要的程序的源代码: http://www.mailsend-online.com/blog/setting-text-color-in-a-batch-file.html
我开始认为,如果没有额外的程序或对用户系统的修改,就不再有内置的方法来实现这一目标。
抛开 - 对于我的场景,如果需要修改用户的系统,我只需选择使用python,IronPython或JScript.NET。