![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-12 03:55 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 【原创】colstr函数---单行输出彩色字符 |
| 可打印版本 6,159 / 38 |
| 第16楼 obediently | 发表于 2008-04-07 13:16 |
| 初级用户 发帖 18 积分 40 | |
|
佩服!!~
|
|
| 第17楼 xb2008chopin | 发表于 2008-04-08 03:14 |
| 初级用户 发帖 11 积分 24 | |
|
学习了 本人正需要这个!谢谢了!
|
|
| 第18楼 lzys | 发表于 2008-04-08 10:24 |
| 初级用户 发帖 28 积分 54 | |
|
不错,学习了,这回可以加醒目的标题了!
|
|
| 第19楼 Shinaterry | 发表于 2008-04-08 11:03 |
| 初级用户 发帖 51 积分 97 | |
|
15楼的代码不能完美的解决问题, 假如字符串后面带多个"空格"? 如何原样输出?
|
|
| 第20楼 ansipeter | 发表于 2008-04-08 11:27 |
| 中级用户 发帖 130 积分 269 | |
|
唉,我想问一下楼上的?你搞清楚显示彩色字符的原理了吗?
|
|
| 第21楼 terse | 发表于 2008-04-08 11:53 |
| 银牌会员 发帖 946 积分 2,404 | |
Originally posted by Shinaterry at 2008-4-8 11:03: 你输入试了没? |
|
| 第22楼 ansipeter | 发表于 2008-04-08 12:04 |
| 中级用户 发帖 130 积分 269 | |
|
问的不合理,答的也不合理,因为根本就不合理,你们两个别用P处理建立文件,你们手动给我建立一个以N个空格结尾的文件,建立好了我看看,唉.........
[ Last edited by ansipeter on 2008-4-8 at 12:10 PM ] |
|
| 第23楼 terse | 发表于 2008-04-08 12:30 |
| 银牌会员 发帖 946 积分 2,404 | |
|
建空格结尾的文件当然不能的 但如P中用CALL呢 肯定提示没有这个文件
|
|
| 第24楼 ZJHJ | 发表于 2008-04-08 22:09 |
| 高级用户 发帖 374 积分 609 | |
|
结尾是空格的不好掌握,我试过,会改变颜色。
|
|
| 第25楼 Shinaterry | 发表于 2008-04-09 01:48 |
| 初级用户 发帖 51 积分 97 | |
|
@ansipeter
原理我是明白, 问题既然存在, 就需要去解决.. 方法我是有的, 可惜太过笨拙.. 考虑是否贴出ing.. |
|
| 第26楼 terse | 发表于 2008-04-09 02:21 |
| 银牌会员 发帖 946 积分 2,404 | |
|
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 |
|
| 第27楼 PPdos | 发表于 2008-04-09 03:38 |
| 高级用户 发帖 268 积分 783 | |
|
佩服 佩服 一直以为纯批做不出这种效果 直到现在还不敢相信,这将给我们莫大的鼓舞!
感谢 实现他的人! 我想了解的是 这个着色理念的局限性 是否能让着色后的脚本正常运行? 希望大家共同探讨一下 |
|
| 第28楼 ansipeter | 发表于 2008-04-09 11:11 |
| 中级用户 发帖 130 积分 269 | |
|
我就说一遍原理,只说一遍,如果有误请谅解
首先说一下如果添加空格该怎么办,我并不了解你加空格的目的和要求,我只是粗略的说一下,如果要加空格请不要把目标投向你要显示的文字的身上,像这样set "a= One World ! ︱ ︱ 空格 ",你应该在set /p=<nul >%1这句上面做文章才是。 实现原理:实现彩色字符显示效果最主要的就是FINDSTR命令/A参数造成的,你所显示的彩色字符就是用FINDSTR查找的文件的文件名称,也就是说显示出来的是文件名称,这个文件是临时的,因为我们只是要显示效果,所以文件名称的要求限制了我们将要显示的内容,文件名是不允许我们用类似”>< : ? \“等等一些特殊字符来命名的,所以我们如果要显示这些字符也就有了限制,其次,我很佩服大家的讨论成果,也就是利用set /p=<nul >%1进行同行显示不同颜色的应用,这是我始料不及的,为什么用set /p=<nul >%1这种方法能够实现同行显示不同颜色呢?因为我们建立的文件内容是 (暂时我们叫退格键),那为何能够实现同行的效果呢?因为文件内容没有包含回车换行符,这样理解我觉得容易些,这也就是实现同行效果的原因(我自己是这样认为的),在说一下set /p=<nul >%1为何能够删除FINDSTR命令遗留下来的讨厌的冒号,就跟讨厌的9527一样,呵呵,请大家记住符号在正常情况下是退格键,但是在P处理中本人觉得他起到了前移一个位置的作用,也就是说符号并没有把前面的字符删除掉,这点一定要清楚,不是把前面的字符删除了,是把光标前移到前面字符的位置了,那为何冒号被删除了,是因为后面的那个空格,是被空格替换掉了,听好了,是替换掉了,其实我觉得很多人认为字符是删除前面的那个字符,其实不然啊.好了,就说到这里,只要大家明白了就好,再次强调一遍,我只说这一次,不在发表任何争论和讨论 [ Last edited by ansipeter on 2008-4-9 at 11:17 AM ] |
|
| 第29楼 ZJHJ | 发表于 2008-04-10 00:24 |
| 高级用户 发帖 374 积分 609 | |
|
我修改了一下,让大家好理解
@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 ] |
|
| 第30楼 lxy2007 | 发表于 2008-04-11 13:08 |
| 新手上路 发帖 1 积分 2 | |
|
强!
|
|
| 上一页 1 2 3 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |