如何更改批处理文件中注释行的文本颜色

时间:2010-04-06 15:19:01

标签: batch-file

我有一个批处理文件如下:

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:\
...

3 个答案:

答案 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。