|
jvive
初级用户
  替身
积分 122
发帖 17
注册 2008-3-27
状态 离线
|
|
2008-3-31 21:40 |
|
|
qwd
初级用户
 
积分 161
发帖 56
注册 2007-10-1
状态 离线
|
『第
2 楼』:
刚写的中国象棋正好需要这个!
顶!
|
|
2008-3-31 22:07 |
|
|
zh159
金牌会员
     
积分 3687
发帖 1467
注册 2005-8-8
状态 离线
|
『第
3 楼』:
利用findstr /a:参数来输出彩色字符不错
|

 |
|
2008-3-31 23:07 |
|
|
niao22
新手上路

积分 14
发帖 7
注册 2008-3-31
状态 离线
|
『第
4 楼』:
才搞明白FINDSTR的用法
在文件中寻找字符串。
FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/F:file]
[/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
strings [[drive:][path]filename[ ...]]
/B 在一行的开始配对模式。
/E 在一行的结尾配对模式。
/L 按字使用搜索字符串。
/R 将搜索字符串作为一般表达式使用。
/S 在当前目录和所有子目录中搜索
匹配文件。
/I 指定搜索不分大小写。
/X 打印完全匹配的行。
/V 只打印不包含匹配的行。
/N 在匹配的每行前打印行数。
/M 如果文件含有匹配项,只打印其文件名。
/O 在每个匹配行前打印字符偏移量。
/P 忽略有不可打印字符的文件。
/OFF[LINE] 不跳过带有脱机属性集的文件。
/A:attr 指定有十六进位数字的颜色属性。请见 "color /?"
/F:file 从指定文件读文件列表 (/ 代表控制台)。
/C:string 使用指定字符串作为文字搜索字符串。
/G:file 从指定的文件获得搜索字符串。 (/ 代表控制台)。
/D:dir 查找以分号为分隔符的目录列表
strings 要查找的文字。
[drive:][path]filename
指定要查找的文件。
除非参数有 /C 前缀,请使用空格隔开搜索字符串。
例如: 'FINDSTR "hello there" x.y' 在文件 x.y 中寻找 "hello" 或
"there" 。 'FINDSTR /C:"hello there" x.y' 文件 x.y 寻找
"hello there"。
一般表达式的快速参考:
. 通配符: 任何字符
* 重复: 以前字符或类别出现零或零以上次数
^ 行位置: 行的开始
$ 行位置: 行的终点
[class] 字符类别: 任何在字符集中的字符
[^class] 补字符类别: 任何不在字符集中的字符
[x-y] 范围: 在指定范围内的任何字符
\x Escape: 元字符 x 的文字用法
\<xyz 字位置: 字的开始
xyz\> 字位置: 字的结束
有关 FINDSTR 常见表达法的详细情况,请见联机命令参考。
|
|
2008-3-31 23:25 |
|
|
Climbing
铂金会员
       网络独行侠
积分 6962
发帖 2753
注册 2003-4-16 来自 河北保定
状态 离线
|
  『第
5 楼』:
还真不容易看懂啊,怎么琢磨的啊?我可是费了将近20分钟的时间才大概看明白是怎么实现的。
关键处在:
Quote: | if %3 neq 1 (set/p=<nul>%2) else echo.>%2
findstr /a:%1 .* "%~2*" |
|
其中的set/p=后面是一个退格符,将这个退格符放到%2这个文件中。
%~2应该是将%2这个变量中的所有双引号去掉,"%~2*"表示在前面生成的%2文件名后面加*号(文件中的通配符),查找的内容是.*(匹配任何内容),这样只显示一个文件名,文件内容中的退格则删除了回车字符,实现同行显示不同的颜色。高明,佩服之至,呵呵。
不知道我分析的对不对?
此帖被 +9 点积分 点击查看详情 评分人:【 jvive 】 | 分数: +2 | 时间:2008-4-2 22:40 | 评分人:【 qzwqzw 】 | 分数: +7 | 时间:2008-4-3 21:00 |
|
|

偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
|
|
2008-4-1 00:38 |
|
|
cooray
初级用户
 
积分 71
发帖 34
注册 2007-9-7
状态 离线
|
|
2008-4-3 14:15 |
|
|
Shinaterry
初级用户
 
积分 97
发帖 51
注册 2008-3-19
状态 离线
|
『第
7 楼』:
利害利害..
|
|
2008-4-3 15:08 |
|
|
qianmo717
初级用户
 
积分 68
发帖 32
注册 2007-12-9
状态 离线
|
『第
8 楼』:
学入门教程的时候就被告知,批处理是不能一屏显示多种颜色的,现在这种理论是不是成立呢?
请问“右键暂停,左键继续”是怎样实现的。
[ Last edited by qianmo717 on 2008-4-4 at 10:15 AM ]
|
|
2008-4-4 10:10 |
|
|
qq43142691
中级用户
  
积分 327
发帖 152
注册 2007-5-4
状态 离线
|
|
2008-4-4 13:58 |
|
|
Shinaterry
初级用户
 
积分 97
发帖 51
注册 2008-3-19
状态 离线
|
『第
10 楼』:
不解: 为什么每一次输出, 后面都会莫明其妙多出一个字符":"?
|
|
2008-4-5 19:33 |
|
|
plp626
银牌会员
     钻石会员
积分 2278
发帖 1020
注册 2007-11-19
状态 离线
|
『第
11 楼』:
用的是findstr /a参数,冒号当然会有了
第二个代码给了很丰富的色彩配置,大家根据需要改啊
@echo off
::输出彩色字符
mode con lines=24 cols=69
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 "x= ︱"
set "p=★★★★★★★★★★★★★★★"
set "k="
pushd %tmp%
del/q "%a%?" "%b%?" "%c%?" "%d%?" "%e%?" "%x%?" "%p%?" 2>nul
call:enter 3
call:JV a "%a%" 0
call:JV b "%b%" 0
call:JV c "%c%" 0
call:enter 5
call:JV 0100 0 0
call:JV 040a "%d%" 0
call:JV 040a "%x%" 0
call:JV 0100 000 0
call:JV 040b "%d%" 0
call:JV 040b "%x%" 0
call:JV 0100 000 0
call:JV 0400 "%d%" 0
call:JV 0400 "%x%" 0
call:JV 0100 0 1
call:enter 3
call:JV e "%e%" 0
call:JV 0100 0 1
echo.
call:color
pause>nul&exit/b
rem ---------subprocess--------
:color|一二层第一个色调混合为主色调,最后一个为闪烁停留色调.
for %%a in (0 e)do (
for %%b in (a 1 2 3 4 5 6 7 8 0 c b d f e)do (
call set "k=%%k%%"
call:bak %%a%%b "%p%" 0
))
goto :eof
:JV
:bak
if %3 neq 1 (set/p=%k%<nul>"%~2") else echo.>"%~2"
if %0 neq :bak (set k=) else set "k=%k%"
findstr /a:%1 .* "%~2?"
del "%~2?"
goto :eof
:enter
for /l %%a in (1 1 %1)do echo. 附图:

[ Last edited by plp626 on 2008-4-23 at 11:44 PM ]
|

山外有山,人外有人;低调做人,努力做事。
进入网盘(各种工具)~~ 空间~~cmd学习 |
|
2008-4-5 20:29 |
|
|
Shinaterry
初级用户
 
积分 97
发帖 51
注册 2008-3-19
状态 离线
|
『第
12 楼』:
唉! 算了! 反正可以删除..
|
|
2008-4-5 20:38 |
|
|
plp626
银牌会员
     钻石会员
积分 2278
发帖 1020
注册 2007-11-19
状态 离线
|
|
2008-4-5 20:49 |
|
|
Shinaterry
初级用户
 
积分 97
发帖 51
注册 2008-3-19
状态 离线
|
『第
14 楼』:
删除冒号!
set "c= 让我们大家一起说 " -> 注意: 只要字符串最后面一带"空格", 运行就会出错..
请问 LZ/plp626 有没有好的解决方法呢? (需保留最后的空格)
|
|
2008-4-7 01:05 |
|
|
terse
银牌会员
    
积分 2404
发帖 946
注册 2005-9-8
状态 离线
|
『第
15 楼』:
Quote: | Originally posted by Shinaterry at 2008-4-7 01:05:
删除冒号!
set "c= 让我们大家一起说 " -> 注意: 只要字符串最后面一带"空格", 运行就会出错..
请问 LZ/plp626 有没有好的解决方法呢? (需保留最后的空格) |
|
@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"
set v=!s:~%p%,1!
set /p= <nul >%1
findstr /a:0!v! .* "%~n1*"
echo.&echo.
del %1
)
|

简单!简单!再简单! |
|
2008-4-7 12:39 |
|