中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 【原创】colstr函数---单行输出彩色字符
« [1] [2] [3] »
作者:
标题: 【原创】colstr函数---单行输出彩色字符 上一主题 | 下一主题
obediently
初级用户





积分 40
发帖 18
注册 2007-5-26
状态 离线
『第 16 楼』:  

佩服!!~

2008-4-7 13:16
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
xb2008chopin
初级用户





积分 24
发帖 11
注册 2008-4-6
状态 离线
『第 17 楼』:  

学习了 本人正需要这个!谢谢了!

2008-4-8 03:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lzys
初级用户





积分 54
发帖 28
注册 2006-10-16
状态 离线
『第 18 楼』:  

不错,学习了,这回可以加醒目的标题了!

2008-4-8 10:24
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Shinaterry
初级用户





积分 97
发帖 51
注册 2008-3-19
状态 离线
『第 19 楼』:  

15楼的代码不能完美的解决问题, 假如字符串后面带多个"空格"? 如何原样输出?

2008-4-8 11:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ansipeter
中级用户

替身



积分 269
发帖 130
注册 2007-3-23
状态 离线
『第 20 楼』:  

唉,我想问一下楼上的?你搞清楚显示彩色字符的原理了吗?



*讨厌的9527*  
2008-4-8 11:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 21 楼』:  



  Quote:
Originally posted by Shinaterry at 2008-4-8 11:03:
15楼的代码不能完美的解决问题, 假如字符串后面带多个"空格"? 如何原样输出?

你输入试了没?



简单!简单!再简单!
2008-4-8 11:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ansipeter
中级用户

替身



积分 269
发帖 130
注册 2007-3-23
状态 离线
『第 22 楼』:  

问的不合理,答的也不合理,因为根本就不合理,你们两个别用P处理建立文件,你们手动给我建立一个以N个空格结尾的文件,建立好了我看看,唉.........

[ Last edited by ansipeter on 2008-4-8 at 12:10 PM ]



*讨厌的9527*  
2008-4-8 12:04
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 23 楼』:  

建空格结尾的文件当然不能的  但如P中用CALL呢 肯定提示没有这个文件



简单!简单!再简单!
2008-4-8 12:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ZJHJ
高级用户





积分 609
发帖 374
注册 2006-8-2
状态 离线
『第 24 楼』:  

结尾是空格的不好掌握,我试过,会改变颜色。

2008-4-8 22:09
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Shinaterry
初级用户





积分 97
发帖 51
注册 2008-3-19
状态 离线
『第 25 楼』:  

@ansipeter

原理我是明白, 问题既然存在, 就需要去解决..

方法我是有的, 可惜太过笨拙..

考虑是否贴出ing..

2008-4-9 01:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 26 楼』:  

RE:Shinaterry
我这里测试的应该可以显示的:你说字符串后面带多个"空格"是否这样呢
@echo off&setlocal enabledelayedexpansion
set "a= One World !     ︱  ︱     空格    "
set "b=one Dream !      ︱  ︱    空格   "
set "c=让我们大家一起说   空格     ︱  ︱  "
set "d=︱              bbs.cn-dos.net is our common home!    空格  "
set "e=        {Author∶jvive︱08-03-31︱Thanks to∶9527}    空格  空格    "
set "f=★★★★★★★★★★★★★★★  空格 ︱  ︱ 空格    "
for %%i in ("%a%" "%b%" "%c%" "%d%" "%e%" "%f%") do call:lp %%i
pause&exit
:lp
set /a p=%random%%%14
set "s=12345689abcde"
call set v=!s:~%p%,1!
set /p= <nul >%1
findstr /a:0!v! .* "%~n1*"
echo.&echo.
del %1



简单!简单!再简单!
2008-4-9 02:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
PPdos
高级用户




积分 783
发帖 268
注册 2006-12-26
状态 离线
『第 27 楼』:  佩服 佩服

一直以为纯批做不出这种效果 直到现在还不敢相信,这将给我们莫大的鼓舞!

感谢 实现他的人!

我想了解的是 这个着色理念的局限性 是否能让着色后的脚本正常运行?

希望大家共同探讨一下



菩提本无树,明镜亦非台,本来无一物,何处惹尘埃.
2008-4-9 03:38
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ansipeter
中级用户

替身



积分 269
发帖 130
注册 2007-3-23
状态 离线
『第 28 楼』:  

我就说一遍原理,只说一遍,如果有误请谅解

首先说一下如果添加空格该怎么办,我并不了解你加空格的目的和要求,我只是粗略的说一下,如果要加空格请不要把目标投向你要显示的文字的身上,像这样set "a= One World !     ︱  ︱     空格    ",你应该在set /p=[N个空格]<nul >%1这句上面做文章才是。

实现原理:实现彩色字符显示效果最主要的就是FINDSTR命令/A参数造成的,你所显示的彩色字符就是用FINDSTR查找的文件的文件名称,也就是说显示出来的是文件名称,这个文件是临时的,因为我们只是要显示效果,所以文件名称的要求限制了我们将要显示的内容,文件名是不允许我们用类似”>< : ? \“等等一些特殊字符来命名的,所以我们如果要显示这些字符也就有了限制,其次,我很佩服大家的讨论成果,也就是利用set /p=[N个空格]<nul >%1进行同行显示不同颜色的应用,这是我始料不及的,为什么用set /p=[N个空格]<nul >%1这种方法能够实现同行显示不同颜色呢?因为我们建立的文件内容是 (暂时我们叫退格键),那为何能够实现同行的效果呢?因为文件内容没有包含回车换行符,这样理解我觉得容易些,这也就是实现同行效果的原因(我自己是这样认为的),在说一下set /p=[空格]<nul >%1为何能够删除FINDSTR命令遗留下来的讨厌的冒号,就跟讨厌的9527一样,呵呵,请大家记住符号在正常情况下是退格键,但是在P处理中本人觉得他起到了前移一个位置的作用,也就是说符号并没有把前面的字符删除掉,这点一定要清楚,不是把前面的字符删除了,是把光标前移到前面字符的位置了,那为何冒号被删除了,是因为后面的那个空格,是被空格替换掉了,听好了,是替换掉了,其实我觉得很多人认为字符是删除前面的那个字符,其实不然啊.好了,就说到这里,只要大家明白了就好,再次强调一遍,我只说这一次,不在发表任何争论和讨论

[ Last edited by ansipeter on 2008-4-9 at 11:17 AM ]

   此帖被 +5 点积分       点击查看详情   
评分人:【 plp626 分数: +4  时间:2008-4-13 12:09
评分人:【 Shinaterry 分数: +1  时间:2008-4-14 12:56




*讨厌的9527*  
2008-4-9 11:11
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ZJHJ
高级用户





积分 609
发帖 374
注册 2006-8-2
状态 离线
『第 29 楼』:  

我修改了一下,让大家好理解

@echo off
call:kh 2
call:JV 0e "                       彩色" 0
call:JV 0f "与黑白字体同在CMD下运行" 0
call:JV 0100 0 1
call:kh 2
call:JV 0a "    单行显示" 0
call:JV 0b "不同颜色" 0
call:JV 0f "的字体(这里没有屏蔽冒号)," 0
@echo.
@echo.
@echo     完全可以与黑白字体混合编辑使用。
call:kh 1
call:JV 0c "    a b c d e f g h i j k l m n o p q r s t u v w x y z 1 2 3 4 5 0 A B C D E" 0
call:JV 0100 0 1
@echo.
call:JV 0d "    {} [] ()()' 、,, ;:‘ ’“”。?" 0
call:JV 0e " !! + _ - = ~ $ @ & # ^" 0
call:JV 0100 0 1
call:kh 1
call:JV 06 "    只要不显示" 0
call:JV 0e "特殊" 0
call:JV 09 "符号" 0
call:JV 00ce "是没有问题的。" 0
call:JV 0100 0 1
call:kh 1
call:JV 0b "    好控制" 0
call:JV 0b "不同颜色,也好调整编辑格式," 0
call:JV 09 "结尾的冒号方便屏蔽。" 0
call:JV 0100 0 1
call:kh 1
call:JV 03 "    不能有整行空格;行末尾也不要有空格。" 0
call:JV 0100 0 1
@echo.
call:JV 0100 "   '" 0
call:JV 019a "学习学习!共同探讨!" 0
call:JV 0100 0 1
@echo.
@echo     感觉容易理解,方便掌握!
pause>nul
goto :eof
:JV
if %3 neq 1 (set/p=<nul>%2) else echo.>%2
findstr /a:%1 .* "%~2*"
del "%~2"
goto :eof
:kh
for /l %%a in (1 1 %1)do echo.
goto :eof

[ Last edited by ZJHJ on 2008-4-10 at 08:43 PM ]

2008-4-10 00:24
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxy2007
新手上路





积分 2
发帖 1
注册 2008-1-8
状态 离线
『第 30 楼』:  

强!

2008-4-11 13:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: