![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-08 20:14 |
共 47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [讨论]********findstr/a之用法质疑******** |
| 可打印版本 4,800 / 23 |
| 第1楼 s11ss | 发表于 2007-11-23 22:19 |
| 银牌会员 发帖 566 积分 2,098 | |
|
[讨论]********findstr/a之用法质疑******** 看到electronixtar兄发的ColorDemo.cmd(http://www.cn-dos.net/forum/viewthread.php?tid=35609&fpage=1)中有一句代码是用findstr来实现显示彩色字符,很佩服前辈的才华啊。我findstr用得少,今晚发现这个命令的/a参数使用有点奇怪,通过findstr/?查看帮助,解释是:
/A:attr 指定有十六进位数字的颜色属性。请见 "color /?" 再看color/?,解释是: attr 指定控制台输出的颜色属性 颜色属性由两个十六进制数字指定 -- 第一个为背景,第二个则为 前景。 这么说来,对于findstr的参数/a,就应该是输入两个十六进制数字啰。但是实际情况不是,我尝试了n次,发现4个十六进制数字有效(多于4个的取最后4个),而在color命令后则不行。这四位中的后两位数好理解,就是如上述的“指定控制台输出的颜色属性“,而前两位是干什么用的呢?我发现是用来控制所显示的文件名字符串(包括之后的冒号)之间的横线和竖线的显示的(包括其有无及粗细),但又好像不全是,因为有时前两位数会影响到后两位数,致使后两位数失去它们的指定颜色的作用(比如2c04)。 TEST:(似乎构成等差数列,公差为4) 1.(横线) 2.(竖线) 3.(横线+竖线) 4.(竖线,注意与第2种情况对比) 5.(横线+竖线,注意与第3种情况对比) 6.(竖线,注意与第2,4种情况对比) 7.(横线+竖线,注意与第3,5种情况对比) 8.换成200a就没有横线和竖线了。 9.后面还有,如:(貌似和1c0a一样) 10.还有些情况是“表格”里居然什么都没有,或者表格最右端出现一条很粗的竖线,另外注意表格边框上的横线和竖线(不同的参数下会导致边框线有时显示,有时又不显示)。还有有时当你把cmd窗口滚动条向上滑动去看上边的命令执行结果然后回过来看,会发现下面的刚执行过的命令的结果居然变了!灵异事件!(比如5c0a) 再来个测试用批处理: ********************************* 注: 以上结论纯粹是我个人观点,大家也来试试,这到底是怎么回事呢? 我的操作系统是: XP Professional 5.1.2600 [ Last edited by s11ss on 2007-11-23 at 10:35 PM ] |
|
| 第2楼 knoppix7 | 发表于 2007-11-24 12:30 |
| 银牌会员 发帖 634 积分 1,287 来自 cmd.exe | |
|
和DEBUG中的 debug 很像..
f b800:0000 f9f XX YY 貌似XX代表样式 YY代表颜色. |
|
| 第3楼 s11ss | 发表于 2007-11-24 17:42 |
| 银牌会员 发帖 566 积分 2,098 | |
|
哦?我想可以用这个特性来画表格..................
|
|
| 第4楼 electronixtar | 发表于 2007-11-27 19:48 |
| 铂金会员 发帖 2,672 积分 7,493 | |
|
哇咔咔,很难得一见的技术贴,真不忍心给水了
那个ColorDemo.CMD不是我写的,我只是转帖,而且我也不是什么前辈,只是一个p处理爱好者而已。 |
|
| 第5楼 zh159 | 发表于 2007-11-27 20:07 |
| 金牌会员 发帖 1,467 积分 3,687 | |
|
现在10to16不用这么罗嗦了,如果只转换一位(0~f),用下面的就OK
转换多位的: [ Last edited by zh159 on 2007-11-27 at 08:09 PM ] |
|
| 第6楼 s11ss | 发表于 2007-11-27 20:08 |
| 银牌会员 发帖 566 积分 2,098 | |
Originally posted by electronixtar at 2007-11-27 07:48 PM: electronixtar兄不要谦虚啦~~诶,兄的签名档中 cmd /cstart "" "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>" 这句怎么我运行后提示“没有可以显示的页面”啊?还有about:都有哪些用法啊? |
|
| 第7楼 electronixtar | 发表于 2007-11-27 20:11 |
| 铂金会员 发帖 2,672 积分 7,493 | |
Originally posted by s11ss at 2007-11-27 20:08: 那就直接运行iexplore about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'> 试试?哇咔咔 [ Last edited by electronixtar on 2007-11-27 at 08:19 PM ] |
|
| 第8楼 electronixtar | 发表于 2007-11-27 20:16 |
| 铂金会员 发帖 2,672 积分 7,493 | |
Originally posted by zh159 at 2007-11-27 20:07: :P 看不懂,牛B了,很久不来这里高手依旧那么彪悍 |
|
| 第9楼 upsco | 发表于 2007-11-27 20:25 |
| 初级用户 发帖 32 积分 67 | |
Originally posted by electronixtar at 2007-11-27 08:11 PM: 我们怎么引用都运行不了,要是我们这样就能运行你电脑上的某个程序,嘎嘎,你可惨了 |
|
| 第10楼 electronixtar | 发表于 2007-11-27 20:28 |
| 铂金会员 发帖 2,672 积分 7,493 | |
Originally posted by upsco at 2007-11-27 20:25: 那么你肯定没有安装 Microsoft Office 2000/XP/2003/2007 中任意一个版本 |
|
| 第11楼 s11ss | 发表于 2007-11-27 20:30 |
| 银牌会员 发帖 566 积分 2,098 | |
|
zh159兄,你的转换多位的代码与我的代码相比也不见得不啰嗦啊~~~~~~~~
不,我收回这句话。 其实各有优缺点。 你的简单但降低了代码可读性,我的啰嗦但提高了代码可读性。 [ Last edited by s11ss on 2007-11-27 at 08:46 PM ] |
|
| 第12楼 s11ss | 发表于 2007-11-27 20:33 |
| 银牌会员 发帖 566 积分 2,098 | |
Originally posted by electronixtar at 2007-11-27 08:28 PM: 我装了 Microsoft Office 2003。好像是经过修改的。 |
|
| 第13楼 zh159 | 发表于 2007-11-27 20:42 |
| 金牌会员 发帖 1,467 积分 3,687 | |
Originally posted by s11ss at 2007-11-27 20:30: 其实核心就是几行: 这段代码是从一位版主(忘了)的代码里简化来的 那个是vbe6.dll里的一段MIDI音乐,我也没成功,直接把它提取出来了 为节省上传文件数量,转换为VBS: [ Last edited by zh159 on 2007-11-27 at 08:45 PM ] |
|
| 第14楼 s11ss | 发表于 2007-11-27 20:51 |
| 银牌会员 发帖 566 积分 2,098 | |
|
zh159兄,你的转换多位的代码与我的代码相比也不见得不啰嗦啊~~~~~~~~
不好意思,我收回这句话。 其实各有优缺点。 你的简单但降低了代码可读性而且加大了“程序处理量”(0-9都替换了),我的啰嗦但提高了代码可读性。 |
|
| 第15楼 everest79 | 发表于 2007-11-27 20:54 |
| 金牌会员 发帖 1,127 积分 2,564 | |
|
我也写过个
SETLOCAL ENABLEDELAYEDEXPANSION IF %1 GTR 2099999999 (GOTO :EOF) SET VAR=0123456789ABCDEF FOR /L %%i IN (0,1,15) DO ( SET H%%i=!VAR:~%%i,1!) SET HH=1&SET KK=0&SET TT=%1 :th1 SET /A HV%HH%=%TT%/16,HV%KK%=%TT%%%16 IF !HV%HH%! GTR 16 (SET TT=HV%HH%&&SET /A HH+=1,KK+=1&&GOTO TH1) SET VAR1=0x00!H%HV9%!!H%HV8%!!H%HV7%!!H%HV6%!!H%HV5%!!H%HV4%!!H%HV3%!!H%HV2%!!H%HV1%!!H%HV0%! ECHO %VAR1% ^<^<=%0 GOTO :EOF |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |