批处理命令精解(整理各类网络资源)

for命令详解

详见for入门到精通教程

http://bbs.bitscn.com/260948

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正则表达式的基本用法

1.findstr . 2.txt 或 Findstr "." 2.txt 
从文件2.txt中查找任意字符,不包括空字符或空行
====================


2.findstr .* 2.txt 或 findstr ".*" 2.txt
从文件2.txt中查找任意字符包括空行和空字符
====================


3.findstr "[0-9]" 2.txt
从文件2.txt中查找包括数字0-9的字符串或行
====================


4.findstr "[a-zA-Z]" 2.txt
从文件2.txt中查找包括任意字符的字符串或行
====================


5.findstr "[abcezy]" 2.txt
从文件2.txt中查找包括a b c e z y字母的字符串或行
====================


6.findstr "[a-fl-z]" 2.txt
从文件2.txt中查找小写字符a-f l-z的字符串,但不包含g h I j k这几个字母。
====================


7.findstr "M[abc][hig]Y" 2.txt
从文件2.txt中可以匹配 MahY , MbiY, MahY等…..
====================


8. ^和$符号的应用
^ 表示行首,"^step"仅匹配 "step hello world"中的第一个单词
$ 表示行尾,"step$"仅匹配 "hello world step"中最后一个单词
====================


9.finstr "[^0-9]" 2.txt
如果是纯数字的字符串或者行便过滤掉,例如2323423423 这样的字符串,如果是345hh888这样的形式就不成了。
====================


10.findstr "[^a-z]" 2.txt
同上,如果是纯字母的字符串或者行便过滤掉,例如 sdlfjlkjlksjdklfjlskdf这样的字符,如果是sdfksjdkf99999这样的形式,掺杂着数字就不成了
====================


11.*号的作用
前面已经说过了 ".*"表示搜索的条件是任意字符,*号在正则表达式中的作用不是任何字符,而是表示左侧字符或者表达式的重复次数,*号表示重复的次数为零次或者多次。
====================


12.findstr "^[0-9]*$" 2.txt
这个是匹配找到的纯数字,例如 234234234234,如果是2133234kkjl234就被过滤掉了。
    Findstr "^[a-z]*$" 2.txt
这个是匹配找到的纯字母,例如 sdfsdfsdfsdf,如果是213sldjfkljsdlk就被过滤掉了
如果在搜索条件里没有*号,也就是说不重复左侧的搜索条件,也就是[0-9] [a-z]那只能匹配字符串的第一个字符也只有这一个字符,因为有行首和行尾的限制,"^[0-9]$"第一个字符如果是数字就匹配,如果不是就过滤掉,如果字符串是 9 就匹配,如果是98或者9j之类的就不可以了。
=====================


13. "\<…\>"这个表达式的作用
这个表示精确查找一个字符串,\<sss 表示字的开始位置,sss\>表示字的结束位置
echo hello world computer|findstr "\<computer\>"这样的形式
echo hello worldcomputer|findstr "\<computer\>" 这样的形式就不成了,他要找的是 "computer"这个字符串,所以不可以。
echo hello worldcomputer|findstr ".*computer\>"这样就可以匹配了

posted @ 2011-06-27 18:47  Sonic4x  阅读(426)  评论(0编辑  收藏  举报