- ·上一篇文章:CMD中findstr 用法 (很强大)
- ·下一篇文章:用批处理设置用户在登录时是否显示
- ·百度中搜索更多的关于“findstr /a (输出带颜色字符)”相关内容
- ·谷歌中搜索更多的关于“findstr /a (输出带颜色字符)”相关内容
- ******申明******
- 本站文章内容有部分为收录网络中其他网友内容,DOS资源站不保证所有的代码都适合你使用。
- 由于编辑匆忙,有可能造成某些脚本文件出现丢失代码或代码无法运行的情况,请网友根据情况自行修改。
- 如果能将出错部分反馈给我,那就更好了。
findstr /a (输出带颜色字符)
findstr /A:attr 指定有十六进位数字的颜色属性。请见 "color /?"
再看color/?,解释是:
attr 指定控制台输出的颜色属性
颜色属性由两个十六进制数字指定 -- 第一个为背景,第二个则为
前景。
这么说来,对于findstr的参数/a,就应该是输入两个十六进制数字啰。但是实际情况不是,我尝试了n次,发现4个十六进制数字有效(多于4个的取最后4个),而在color命令后则不行。这四位中的后两位数好理解,就是如上述的“指定控制台输出的颜色属性“,而前两位是干什么用的呢?我发现是用来控制所显示的文件名字符串(包括之后的冒号)之间的横线和竖线的显示的(包括其有无及粗细),但又好像不全是,因为有时前两位数会影响到后两位数,致使后两位数失去它们的指定颜色的作用(比如2c04)。
TEST:(似乎构成等差数列,公差为4)
1.(横线)
findstr /a:040a . %systemdrive%\boot.ini*
2.(竖线)
findstr /a:080a . %systemdrive%\boot.ini*
3.(横线+竖线)
findstr /a:0c0a . %systemdrive%\boot.ini*
4.(竖线,注意与第2种情况对比)
findstr /a:100a . %systemdrive%\boot.ini*
5.(横线+竖线,注意与第3种情况对比)
findstr /a:140a . %systemdrive%\boot.ini*
6.(竖线,注意与第2,4种情况对比)
findstr /a:180a . %systemdrive%\boot.ini*
7.(横线+竖线,注意与第3,5种情况对比)
findstr /a:1c0a . %systemdrive%\boot.ini*
8.换成200a就没有横线和竖线了。
9.后面还有,如:(貌似和1c0a一样)
findstr /a:dd0a . %systemdrive%\boot.ini*
10.还有些情况是“表格”里居然什么都没有,或者表格最右端出现一条很粗的竖线,另外注意表格边框上的横线和竖线(不同的参数下会导致边框线有时显示,有时又不显示)。还有有时当你把cmd窗口滚动条向上滑动去看上边的命令执行结果然后回过来看,会发现下面的刚执行过的命令的结果居然变了!灵异事件!(比如5c0a)
再来个测试用批处理:
@echo off&title DOS资源站 www.cmdos.net
setlocal
set begin=%1
set end=%2
set step=%3
set colo=%4
if "%4" equ "" (
echo 四个参数:
echo 1.起始值(两位16进制):如04
echo 2.终值(两位16进制):如2c
echo 3.公差(10进制):如4
echo 4.后两位颜色设置(两位16进制):如0a
echo 例如:%0 04 2c 4 0a
set begin=04
set end=2c
set step=4
set colo=0a
)
set/a n=0x%begin%
set t=test.tmp
pushd %tmp%
if exist %t% goto :test
for /l %%a in (1,1,5) do echo.^ >>%t%
:test
call :10to16 %n%
if %n% lss 16 (set v=0%r%%colo%) else (set v=%r%%colo%)
echo %v%
findstr/a:%v% . %t%*
echo.
set/a n+=%step%
if not %n% gtr 0x%end% goto :test
popd
pause
goto :eof
:10to16
set/a q=%1
:1c
set/a r=%q%%%16
set/a q=%q%/16
call set r=%%r:10=A%%
call set r=%%r:11=B%%
call set r=%%r:12=C%%
call set r=%%r:13=D%%
call set r=%%r:14=E%%
call set r=%%r:15=F%%
call set r%1=%r%%%r%1%%
if not %q% equ 0 goto :1c
call set r=%%r%1%%
set r%1=

