批处理文件颜色混合(第2部分)

时间:2013-12-13 15:13:57

标签: batch-file utility

我尝试使用此代码来混合颜色,有人可以向我描述代码吗?

@echo off
setlocal EnableDelayedExpansion
set hexa=0123456789ABCDEF
set /P "first=Enter first color (hexa digit): "
set /P "second=Enter second color (hexa digit): "
set /A sum= (0x%first% + 0x%second%) %% 16
set result=!hexa:~%sum%,1!
color %result%
echo The result is: %result%

我知道这是我的第一个问题的一部分,但我只是需要帮助才能正确使用它。

我很抱歉首先要问这个愚蠢的问题......我正在进行大量的研究,其中一些没有正常工作,我希望有更简单的方法来获得我想要的东西。对不起伙计=(

3 个答案:

答案 0 :(得分:1)

original question中,用户要求将2种颜色混合成另一种颜色(例如:红色+黄色以制作橙色)“。我回答了color命令的颜色表,该颜色表使用16种不同的颜色,其中0到F的值以十六进制表示(相当于0到15的十进制):

0 = Black       8 = Gray
1 = Blue        9 = Light blue
2 = Green       A = Light green
3 = Aqua        B = Light aqua
4 = Red         C = Light red
5 = Magenta     D = Light magenta
6 = Brown       E = Yellow
7 = White       F = Bright white

我详细阐述了他的例子:红色值是4 +黄色值是E(十进制14)= 12十六进制(十进制18)。此结果超出了有效颜色范围,因此需要进行调整,并且执行此调整的常用方法是将大数字的余数除以基值,此处为16案件。这就是这一行:

set /A sum= (0x%first% + 0x%second%) %% 16

您可以输入set /?以进一步说明上一行。这样,18位小数除以16位小数时的余数为2,对应于绿色。以十六进制表示法更容易得到余数,因为它只是最后一位数。获得此余数的另一种方法是从上一个表中的第一个值开始,然后跳转第二个值的颜色数,当表结束时返回第一个颜色(0)。

您可以尝试其他“混色”情况,例如:蓝色(1)+棕色(6)=白色(7); Aqua(3)+浅蓝色(9)=浅红色(C,十进制12);洋红色(5)+浅品红色(D,十进制13)= 12(十进制18)=绿色(2)。

请注意,如果您将灰色(8)“添加”到任何其他颜色,结果是在该颜色的深色和浅色版本之间切换。

答案 1 :(得分:0)

哦,这是你的代码的一步一步:

@echo off

关闭Echo意味着用户无法看到执行的任何命令,只能看到输入和输出

setlocal EnableDelayedExpansion

如果!已展开

,则允许使用%扩展变量

set hexa=0123456789ABCDEF

创建一个变量hexa,其值为所有有效的十六进制数字。

set /P "first=Enter first color (hexa digit): "

使用上述文本提取一行输入提示,并将first设置为它。

set /P "second=Enter second color (hexa digit): "

使用上述文本提取一行输入提示,并将seconds设置为它。

set /A sum= (0x%first% + 0x%second%) %% 16

创建一个变量sum,该变量设置为上述等式

的解
set result=!hexa:~%sum%,1!

result索引和前一个字母创建一个设置为hexa的变量sum

color %result%

将屏幕颜色设置为十六进制值result

echo The result is: %result%

向控制台输出上述文本,包括变量result的值。

这很好地解释了,如果你想让这段代码做其他事情,请随意问。

莫纳。

答案 2 :(得分:0)

CMD窗口的颜色可以像下面这样自定义(我从'color'命令帮助中选择一些句子): 颜色属性由两个十六进制数字指定 - 第一个 对应于背景;第二个是前景。每个数字 可以是以下任何值:     0 =黑8 =灰色     1 =蓝色9 =浅蓝色     2 =绿色A =浅绿色     3 = Aqua B = Light Aqua     4 =红色C =浅红色     5 =紫色D =浅紫色     6 =黄色E =浅黄色     7 =白色F =亮白色

因此可以通过以下命令指定颜色:

color F9

其中F是背景颜色,9是文本颜色。 您发布的代码中的其余部分是从输入中获取值并调用此命令。