|
vkill
金牌会员
积分 4103
发帖 1744
注册 2006-1-20 来自 甘肃.临泽
状态 离线
|
『楼 主』:
论坛色彩渐变代码生成器.bat
需要sed.exe
@echo off
title 论坛色彩渐变代码生成器 V-1.2 by-vkill
::默认config:::::::::::::::::::::::::::::::::::::::::
::说明%txt%为临时文件,你可以随便自定义
set "起始色=FF0000"
set "结束色=0000FF"
set "显示文字=test color"
set "txt=ubb.txt"
:::::::::::::::::::::::::::::::::::::::::::::::::::::
::依赖文件完整性检查
sed.exe >nul 2>nul
if "%ERRORLEVEL%"=="9009" (
echo 缺少程序依赖文件sed.exe
echo 请到http://www.yx127.com/tools.html页面下载再运行此程序
pause>nul
goto :eof
)
:::::::::::::::::::::::::::::::::::::::::::::::::::::
:start
cls
endlocal
setlocal ENABLEDELAYEDEXPANSION
echo.
echo 直接回车表示默认,输入格式请遵照默认的例子
echo.
set "str=起始色;结束色;显示文字"
for %%? in (%str%) do (set/p=[默认%%?^=!%%?!]<nul)
echo.
echo.
for %%? in (%str%) do (set/p=%%?=<nul&set/p "%%?= ")
if "%起始色%*"=="%结束色%*" (echo 貌似没有变色哦&pause>nul&goto start)
echo.
echo 开始转换,稍等...
:::::::::::::::::::::::::::::::::::::::::::
set "显示文字= !显示文字!"
::计算%显示文字%的位数
for /f %%? in ('echo "%显示文字%"^|sed "s/^\x22//;s/\x22$//;s/[\x80-\xFF][\x40-\xFF]/&\n/g;s/[\x20-\x7F]/&\n/g"^|sed -n "$="') do (set/a ww=%%?-1)
::转换%起始色%和%结束色%到10进制
call :h2d %起始色%
set/p ad=<%txt%
call :h2d %结束色%
set/p zd=<%txt%
::计算隔多少放一个颜色
if %ad% lss %zd% (set "max=%zd%"&set "min=%ad%"&set "顺=是") else (set "max=%ad%"&set "min=%zd%"&set "顺=否")
set/a "n1=%max%-%min%"
set/a "n2=%n1%/%ww%"
::计算出每个字的颜色并转换到16进制
for /l %%? in (1,1,%ww%) do (
set/a #%%?=%n2%*%%?+%min%
call :d2h !#%%?!
set/p #%%?=<%txt%
)
::写[color=#...]*[/color]
echo "%显示文字%"|sed "s/^\x22//;s/\x22$//;s/[\x80-\xFF][\x40-\xFF]/⒈&⒉/g;s/[\x20-\x7F]/⒈&⒉/g"|sed "s/⒈/[color=#↑]/g;s/⒉/[\/color]/g"|more>%txt%
::替换每个字的颜色
set/p var=<%txt%
if "%顺%*"=="是*" (call :换色 1 1 %ww%)
if "%顺%*"=="否*" (call :换色 %ww% -1 1)
echo ok,生成的代码在%txt%文件中,任意键后自动打开%txt%文件,请手动复制
pause>nul
start %txt%
goto start
::::::::::::::::::::::::::all call::::::::::::::::::::::::::::
::------------------------------------------------------------
:h2d
::16进制转10进制
endlocal
setlocal ENABLEDELAYEDEXPANSION
set hs=%1
set /a sum=0x!hs!
>%txt% echo %sum%
goto :eof
::------------------------------------------------------------
:d2h
::10进制转16进制
endlocal
setlocal enabledelayedexpansion
set "hs=%1"
:loop_d2h
set/a z=%hs%/16
set/a y=%hs%%%16
if %z% lss 16 (
call :zh_d2h %y%
call :zh_d2h %z%
goto loop_end_d2h ) else (call :zh_d2h %y%)
set hs=%z%
goto loop_d2h
:loop_end_d2h
>%txt% echo %sum%
goto :eof
:zh_d2h
if %1 GEQ 10 (
if "%1*"=="10*" set var=A
if "%1*"=="11*" set var=B
if "%1*"=="12*" set var=C
if "%1*"=="13*" set var=D
if "%1*"=="14*" set var=E
if "%1*"=="15*" set var=F
) else (set var=%1)
set sum=!var!%sum%
goto :eof
::------------------------------------------------------------
:补位
endlocal
setlocal enabledelayedexpansion
set "hs=%1"
:loop_补位
if "!hs:~5,1!*"=="*" (
set "hs=0!hs!"
goto loop_补位
)
>%txt% echo !hs!
goto :eof
::-----------------------------------------------------------
:换色
endlocal
setlocal enabledelayedexpansion
for /l %%a in (%1,%2,%3) do (
call :补位 !#%%a!
set/p #color=<%txt%
for /f "tokens=*" %%? in ('echo "!var!"^|sed "s/^\x22//;s/\x22$//;s/↑/!#color!/"') do (set "var=%%?")
)
echo "!var!"|sed "s/^[\x22 /t]*//g;s/[\x22 /t]*$//g"|more>%txt%
goto :eof [ Last edited by vkill on 2007-3-14 at 02:26 AM ]
此帖被 +60 点积分 点击查看详情 评分人:【 9527 】 | 分数: +11 | 时间:2007-3-11 01:42 | 评分人:【 lxmxn 】 | 分数: +20 | 时间:2007-3-11 06:19 | 评分人:【 HUNRYBECKY 】 | 分数: +5 | 时间:2007-3-14 21:23 | 评分人:【 redtek 】 | 分数: +20 | 时间:2007-3-14 22:18 | 评分人:【 qasa 】 | 分数: +4 | 时间:2007-4-4 11:44 |
|
|
|
2007-3-11 01:20 |
|
|
vkill
金牌会员
积分 4103
发帖 1744
注册 2006-1-20 来自 甘肃.临泽
状态 离线
|
『第
2 楼』:
效果:
bbs.cn-dos.net 爱你~
特殊字符测试
!@#$%^&*()_+-={}|[]\:";'<>?,./
@#$%^&*()_+-={}|[]\:;'<>?,./
[ Last edited by vkill on 2007-3-16 at 01:47 AM ]
|
|
2007-3-11 01:20 |
|
|
huzixuan
高级用户
积分 537
发帖 219
注册 2006-10-31 来自 芜湖
状态 离线
|
『第
3 楼』:
这回是测试,看能用吗?
|
江湖远
碧空长
路茫茫
一个人漫无目的的奔跑,风,刺骨的冷.... |
|
2007-3-11 01:30 |
|
|
huzixuan
高级用户
积分 537
发帖 219
注册 2006-10-31 来自 芜湖
状态 离线
|
『第
4 楼』:
呦!挺好用的!!!!!!!!!!!!!!!!!!!!
|
江湖远
碧空长
路茫茫
一个人漫无目的的奔跑,风,刺骨的冷.... |
|
2007-3-11 01:31 |
|
|
slore
铂金会员
积分 5212
发帖 2478
注册 2007-2-8
状态 离线
|
『第
5 楼』:
bbs.cn-dos.net 爱你~
!@#$%^&*()_+-={}|[]\:";'<>?,./
你的颜色的过渡效果太差了吧。
|
|
2007-3-11 01:37 |
|
|
ccwan
金牌会员
积分 2725
发帖 1160
注册 2006-9-23 来自 河北廊坊
状态 离线
|
『第
6 楼』:
该死的vk,居然趁我吃饭的工夫发帖,自己抢沙发,害得我连板凳都没得坐。
[ Last edited by ccwan on 2007-3-11 at 01:40 AM ]
|
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。 |
|
2007-3-11 01:38 |
|
|
vkill
金牌会员
积分 4103
发帖 1744
注册 2006-1-20 来自 甘肃.临泽
状态 离线
|
『第
7 楼』:
Quote: | Originally posted by slore at 2007-3-11 01:37:
bbs.cn-d[color=00C05A ... |
|
望指教一二
|
|
2007-3-11 01:48 |
|
|
slore
铂金会员
积分 5212
发帖 2478
注册 2007-2-8
状态 离线
|
『第
8 楼』:
FF0000
然后中间的00从0开始增加到FF
成
FFFF00
然后第前2个FF开始减少到0
00FF00
…………
00FF00~00FFFF
00ffff~0000FF(绿色的减少)
0000FF~FF00FF(红色的增加上来)
最后蓝色的FF逐渐减少,就成FF0000
那么就从红到红了,完成了变化。
自己可以在桌面属性的那个自定义颜色里把鼠标从左上角缓慢拖到右上角……自己看看R G B的变化情况。
这个是彩虹色的过渡……
|
|
2007-3-11 02:17 |
|
|
vkill
金牌会员
积分 4103
发帖 1744
注册 2006-1-20 来自 甘肃.临泽
状态 离线
|
『第
9 楼』:
再测试
123456789.
bbs.cn-dos.net 爱你~
哈哈!·#¥%……—*()——+
test color
还是不明白slore兄所说的
[ Last edited by vkill on 2007-3-14 at 02:12 AM ]
|
|
2007-3-11 02:22 |
|
|
slore
铂金会员
积分 5212
发帖 2478
注册 2007-2-8
状态 离线
|
『第
10 楼』:
为了gif文件的大小,图质量不好,不过足以说明效果。
你仔细看R G B数值的变化情况
附件
1: 1.gif (2007-3-11 02:35, 32.9 K,下载次数: 4)
|
|
2007-3-11 02:35 |
|
|
vkill
金牌会员
积分 4103
发帖 1744
注册 2006-1-20 来自 甘肃.临泽
状态 离线
|
『第
11 楼』:
我是每隔一段10进制的数来给一个字符上色的,看来这个方法不可行
|
|
2007-3-11 02:37 |
|
|
zh159
金牌会员
积分 3687
发帖 1467
注册 2005-8-8
状态 离线
|
|
2007-3-11 02:41 |
|
|
slore
铂金会员
积分 5212
发帖 2478
注册 2007-2-8
状态 离线
|
『第
13 楼』:
Quote: | Originally posted by vkill at 2007-3-10 13:37:
我是每隔一段10进制的数来给一个字符上色的,看来这个方法不可行 |
|
我以前也是那样=。=
但是彩虹的过渡不是按10进制递增的。。。
|
|
2007-3-11 02:43 |
|
|
vkill
金牌会员
积分 4103
发帖 1744
注册 2006-1-20 来自 甘肃.临泽
状态 离线
|
『第
14 楼』:
re slore
那是怎么递增的那?好象有些10进制转换到16进制,那个16进制就没有颜色是不?
|
|
2007-3-11 02:46 |
|
|
slore
铂金会员
积分 5212
发帖 2478
注册 2007-2-8
状态 离线
|
『第
15 楼』:
16进制也是颜色啊……
不过要分段递增,你看图在看我#8的。。。应该可以理解了吧。
|
|
2007-3-11 02:48 |
|