中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-24 06:55
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 论坛色彩渐变代码生成器.bat 查看 6,682 回复 52
16 发表于 2007-03-11 02:54 ·  中国 甘肃 张掖 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
20年会员
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
re slore
哦,那就是
12 红
34 绿
56 蓝

着三个分段+和-吧??通过调节三段来控制是吗?》
17 发表于 2007-03-11 03:10 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
每一个字都需要RGB3个数字表示的颜色去定义,没一个都是0~255即16进制的00~FF

FF0000
FF0100
FF0200
.
.
.
FFFF00
第一部分。

FFFF00
FEFF00
FDFF00
.
.
.
00FF00
第2部分。这些颜色是连续的渐变。。。

每次的间隔是多少要根据字符长度。。看你要分几段了。
18 发表于 2007-03-11 05:26 ·  中国 广西 玉林 博白县 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
20年会员
UID 44210
状态 离线
正确的是:得根据每行长度确定渐变不常,如16字符:00-11-22-33-44-55-66-77-88-99-aa-bb-cc-dd-ee-ff;8字符:11-33-55-77-99-bb-dd-ff
比较麻烦,所以统一步骤00-11-22-33-44-55-66-77-88-99-aa-bb-cc-dd-ee-ff看看能不能更好些

以上是例子

[ Last edited by zh159 on 2007-3-10 at 04:29 PM ]
19 发表于 2007-03-11 05:33 ·  中国 黑龙江 牡丹江 中移铁通
中级用户
★★
积分 216
发帖 129
注册 2007-02-14 07:26
19年会员
UID 79469
性别 男
状态 离线
ceshikankanxiaoguo
20 发表于 2007-03-11 06:08 ·  中国 甘肃 张掖 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
20年会员
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
试了下最多支持51个字符的着色
21 发表于 2007-03-11 06:32 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
从FF0000开始到FF00FF一共有1275个。。。

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
22 发表于 2007-03-11 06:49 ·  中国 甘肃 张掖 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
20年会员
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
·#%*+

这个还可以,转换的

[ Last edited by vkill on 2007-3-11 at 07:03 AM ]
23 发表于 2007-03-11 06:58 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
貌似只有2个颜色的过渡?
24 发表于 2007-03-11 07:03 ·  中国 甘肃 张掖 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
20年会员
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
Originally posted by slore at 2007-3-11 06:58:
貌似只有2个颜色的过渡?

天知道我怎么弄的
25 发表于 2007-03-13 08:58 ·  中国 湖北 武汉 电信
初级用户
积分 76
发帖 38
注册 2007-03-13 02:54
19年会员
UID 81544
性别 男
状态 离线
26 发表于 2007-03-13 12:14 ·  中国 湖北 潜江 电信
高级用户
★★★
积分 894
发帖 411
注册 2007-02-17 12:15
19年会员
UID 79697
性别 男
状态 离线
不会用, 不知是怎么回事
@set c= 不知则觉多,知则觉少,越知越多,便觉越来越少. --- 知多少.
@for,/l,%%i,in,(1,1,55)do,@call,set/p=%%c:~%%i,1%%<nul&ping/n 1 127.1>nul


27 发表于 2007-03-14 02:28 ·  中国 甘肃 张掖 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
20年会员
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
更新了下,现在可以直接处理大多数特殊字符了,已知不可以处理 ! ,还有要是有 " 的话要必须成双的出现,不如说 @#"34%$$ %$^$"
28 发表于 2007-03-14 02:59 ·  中国 广西 玉林 博白县 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
20年会员
UID 44210
状态 离线
玩一下,只能定义开头颜色为红、绿、蓝,部分特殊字符不能处理。
@echo off
setlocal EnableDelayedExpansion
set Num=1
for /l %%i in (1,1,6) do (
if !Num! LEQ 16 for %%n in (0 1 2 3 4 5 6 7 8 9 a b c d e f) do set color!Num!=ff%%n%%n00&set /a Num+=1
if !Num! GTR 16 if !Num! LEQ 31 for %%n in (e d c b a 9 8 7 6 5 4 3 2 1 0) do set color!Num!=%%n%%n!color16:~-4!&set /a Num+=1
if !Num! GTR 31 if !Num! LEQ 46 for %%n in (1 2 3 4 5 6 7 8 9 a b c d e f) do set color!Num!=!color31:~0,4!%%n%%n&set /a Num+=1
if !Num! GTR 46 if !Num! LEQ 61 for %%n in (e d c b a 9 8 7 6 5 4 3 2 1 0) do set color!Num!=!color46:~0,2!%%n%%n!color46:~-2!&set /a Num+=1
if !Num! GTR 61 if !Num! LEQ 76 for %%n in (1 2 3 4 5 6 7 8 9 a b c d e f) do set color!Num!=%%n%%n!color61:~-4!&set /a Num+=1
if !Num! GTR 76 if !Num! LEQ 90 for %%n in (e d c b a 9 8 7 6 5 4 3 2 1) do set color!Num!=!color76:~0,4!%%n%%n&set /a Num+=1
)

:Main
cls
echo.
set Num=
set input=
set /p Num= 输入开始颜色(红绿蓝):
for %%n in (R G B) do if /i "%Num%" == "%%n" goto input
goto Main
:input
set /p input= 输入文字:
if not defined input exit
if /i "%Num%" == "R" set Num=0
if /i "%Num%" == "G" set Num=30
if /i "%Num%" == "B" set Num=60

cd.>test.txt
:loop
set /a Num+=1
>>test.txt set /p=%input:~0,1%<nul
set "input=%input:~1%"
if %num% GEQ 90 set Num=
if not "%input%" == "" goto loop
start test.txt
goto Main
exit


0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
29 发表于 2007-03-14 03:14 ·  中国 甘肃 张掖 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
20年会员
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
re zh159

我也想过用set/p来单个的着色,但这样处理特殊字符太烂

123456789

字符太少了效果不怎么好,呵呵

[ Last edited by vkill on 2007-3-14 at 03:15 AM ]
30 发表于 2007-03-14 14:51 ·  中国 广西 玉林 博白县 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
20年会员
UID 44210
状态 离线
修改一下:定义开头颜色为红、橙、黄、绿、青、蓝、紫,并根据长度分阶段调整颜色变化步幅;部分特殊字符不能处理。
::zh159@bbs.cn-dos.net
@echo off
setlocal EnableDelayedExpansion
set Num=1
for /l %%i in (1,1,6) do (
if !Num! LEQ 16 for %%n in (0 1 2 3 4 5 6 7 8 9 a b c d e f) do set color!Num!=ff%%n%%n00&set /a Num+=1
if !Num! GTR 16 if !Num! LEQ 31 for %%n in (e d c b a 9 8 7 6 5 4 3 2 1 0) do set color!Num!=%%n%%n!color16:~-4!&set /a Num+=1
if !Num! GTR 31 if !Num! LEQ 46 for %%n in (1 2 3 4 5 6 7 8 9 a b c d e f) do set color!Num!=!color31:~0,4!%%n%%n&set /a Num+=1
if !Num! GTR 46 if !Num! LEQ 61 for %%n in (e d c b a 9 8 7 6 5 4 3 2 1 0) do set color!Num!=!color46:~0,2!%%n%%n!color46:~-2!&set /a Num+=1
if !Num! GTR 61 if !Num! LEQ 76 for %%n in (1 2 3 4 5 6 7 8 9 a b c d e f) do set color!Num!=%%n%%n!color61:~-4!&set /a Num+=1
if !Num! GTR 76 if !Num! LEQ 90 for %%n in (e d c b a 9 8 7 6 5 4 3 2 1) do set color!Num!=!color76:~0,4!%%n%%n&set /a Num+=1
)

:Main
cls
echo.
set RGB=
set /p RGB= 输入开始颜色(红橙黄绿青蓝紫):
for /l %%n in (1,1,7) do if "%RGB%" == "%%n" goto input
echo.
echo 输入开始颜色错误!
echo.
pause
goto Main

:input
set Num=
for %%n in (1 8 16 31 46 61 76) do set /a Num+=1&if "%RGB%" == "!Num!" set RGB=%%n
echo.
set input=
set /p input= 输入文字:
if not defined input exit

set Num=
set "str=%input%"
:Num
set "str=%str:~1%"
set /a Num+=1
if not "%str%" == "" goto Num
set step=1
for %%n in (70 40 20 10) do if %Num% lss %%n set /a step+=1

cd.>test.txt
:loop
>>test.txt set /p=%input:~0,1%<nul
set /a RGB+=%step%
set "input=%input:~1%"
if %RGB% GTR 90 set RGB=1
if not "%input%" == "" goto loop
start test.txt
goto Main
exit


012345678
0123456789012345678
012345678901234567890123456789012345678
0123456789012345678901234567890123456789
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789

[ Last edited by zh159 on 2007-3-14 at 01:57 AM ]
本帖最近评分记录 (共 2 条) 点击查看详情
评分人分数时间
vkill +8 2007-03-16 01:38
qasa +4 2007-04-04 11:48
论坛跳转: