我有一個批處理文件,如下所示:如何更改註釋行的文本顏色在批處理文件
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:\
...
我有一個批處理文件,如下所示:如何更改註釋行的文本顏色在批處理文件
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:\
...
有這樣做的沒有內置的方式。我建議你自己編寫一個小幫手程序,它可以改變文本的顏色屬性或者寫入一些帶有特定顏色屬性的文本。
在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怪物掙扎之後最快的方式;-)。
這是一個程序的源代碼,你想要做什麼: http://www.mailsend-online.com/blog/setting-text-color-in-a-batch-file.html
我開始覺得不再有一個內置的方式做到這一點無需額外的程序或修改的用戶的系統。另外 - 對於我的場景,如果需要對用戶系統進行修改,我只需選擇使用python,IronPython或JScript.NET。
一個幾乎相同的問題,有人問這一個6個月後,和傑布之後提供一個很好的答案3: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
您使用的是Windows或DOS(ansi.sys允許更改提示顏色個別行)?考慮一個不同的shell(cygwin)或腳本語言(可能是vbscript/jscript?) – davidosomething 2010-04-06 15:34:12
是的,我正在使用DOS。由於批處理文件以不同的步驟進行,因此我在開始時給出了註釋行,並且我希望這些註釋行在區分方面有所不同。請幫助我解釋如何使用ansi.sys) – flopdix 2010-04-06 15:37:37
'ansi.sys'只能用於'command.com'。 – Joey 2010-04-18 09:08:21