在文件中寻找字符串。

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"。
 ------------------------------------------------------------------------------------------------------1.基本格式:findstr " strings " [drive:][path]filename
Strings  是要查找的内容。
 [rive:][path]filename  指定要查找的文件,路径可缺省,缺省情况下为当前目录。例1
 findstr "icq" 123.txt
 在123.txt中查找包含有“icq”这三个字符串的行。
 ------------------------------------------------------------------------------------------------------/I  指定搜索不分大小写。
例2
 findstr /i "MSN" 123.txt
 在123.txt中查找包含有“MSN”这三个字符的行,且不区分大小写。
 ------------------------------------------------------------------------------------------------------★/R 将搜索字符串作为正则表达式使用。参数/R 强调以正则表达式规则来解读字符串。R - Right 右即为正。我们
 都说右手是正手,因此引申为右为正,左为反。例3
 findstr /r "icq msn" 123.txt
 在123.txt中查找包含有 “icq”或“msn”的行,查找的多个字符串间用空格隔格开。
 ------------------------------------------------------------------------------------------------------ /S 在当前目录和所有子目录中搜索。
例4
 findstr /s /i "MSN" *.txt
 在当前目录和所有子目录中的txt文件中搜索字符串"MSN"(不区分字母大小写)。
 ------------------------------------------------------------------------------------------------------/C:string 使用指定字符串作为文字搜索字符串。
例5
 findstr /c:"icq msn" 123.txt
 在123.txt中查找包含有 “icq msn”这几个字符的行。注意,这里“icq msn”是一整体的。
 此参数多用于查找含有空格的字符串。
 ------------------------------------------------------------------------------------------------------★在使用 findstr "我 你 他" test.txt 的时候,并不能查找到内容,但是,加上开关 /i 或者 /r 之后就正确无误
 了,可能是在查找多个纯中文字符串的时候的一个bug吧;单个的纯中文字符串没有任何问题。
 ------------------------------------------------------------------------------------------------------ 2.findstr 命令中正则表达式的用法规则
一般表达式的快速参考:
   .        通配符: 任何字符
   *        重复: 以前字符或类别出现零或零以上次数
   ^        行位置: 行的开始
   $        行位置: 行的终点
   [class]  字符类别: 任何在字符集中的字符
   [^class] 补字符类别: 任何不在字符集中的字符
   [x-y]    范围: 在指定范围内的任何字符
   \x       Escape: 元字符 x 的文字用法
   \<xyz    字位置: 字的开始
   xyz\>    字位置: 字的结束
 ------------------------------------------------------------------------------------------------------● 通配符和重复符规则,即 . 和 *
 通配符,即一个句点,代表任何一个字符,而且只能是一个,包括字母、数字、半角符号还有空格。
 重复符,即型号* 代表前面字母的出现次数(出现次数从0到多次,0表示没有)。findstr . 123.txt 或 findstr "." 123.txt
 在文件123.txt中查找任意字符,不包括空行。例6
 findstr .* 2.txt 或 findstr ".*" 2.txt
 在文件123.txt中查找任意字符,包括空行。例7
 findstr ac* 123.txt 
 在文件123.txt中查找出现一个“a”字符串,以及a后面出现过0次或者任意次c的字符行。
 如:
 a 
 ac
 acc
 addc
 等都匹配。例8
 findstr ak5* 123.txt 
 在文件123.txt中查找出现一个“ak”字符串,以及ak后面出现过0次或者任意次5的字符行。如:
 ak
 ak5
 akbbb
 ak125
 ak555
 等都匹配。
 ------------------------------------------------------------------------------------------------------●行首、行尾符规则,即 ^ 和 $
例9
 findstr "^step" 123.txt
 在文件123.txt中查找行首为step字符串的行。
 如:
 stepkdka
 step 456
 这两行都匹配的。例10
 findstr "step$" 123.txt
 在文件123.txt中查找行尾为step字符串的行。
 如:
 123 dstep
 123step
 这两行也匹配的。例11
 findstr "^step$" 123.txt
 在文件123.txt中查找行首为step,且行尾也为step的行,即step独自一行。
 ------------------------------------------------------------------------------------------------------● 字符集规则,即[class]
 ①表示含有集里的任意一个字符的即匹配。
 ②该字符集里的元素可以是字母和数字和一般的半角字符,如:}{ ,.][等,但双引号"不被识别。不能是汉字, 汉字
 不被正确解释(汉字不是ASCII码)。
 如果在字符集内插入通配符和重复符号,即"[.*]"将会把. 和 *视为普通字符,没有通配和重复的含义。例12
 findstr "[0-9]" 123.txt
 在文件123.txt中查找数字0-9的任意之一的行。
 如:
 4kkb
 1 lkka cc
 这两行都匹配。例13
 findstr "[a-zA-Z]" 123.txt
 在文件123.txt中查找包括任意字母行。例14
 findstr "[abcezy]" 2.txt
 在文件123.txt中查找包括a b c e z y其中任意一字母的行。例15
 findstr "[a-fl-z]" 2.txt
 在文件123.txt中查找小写字符a到f 或l到z的任意一字母的行,但不包含g h I j k这几个字母。例16
 findstr "M[abc][123]Y" 2.txt
 在文件123.txt中查找可以匹配 Ma1Y , Mb1Y, Mc1Y; Ma2Y , Mb2Y, Mc2Y; Ma3Y , Mb3Y, Mc3Y的行。
 ------------------------------------------------------------------------------------------------------● 减法规则,即[^class]
例17
 findstr "[^0-9]" 123.txt
 如果是纯数字的行便过滤掉,例如2323423423 这样的字符串被过滤,345hh888这样的形式则过滤不了。
 注意,纯数字的行不能有空格,不论行首行尾或者是行中都不能有空格,否则过滤失败!例18
 findstr "[^a-z]" 123.txt
 如果是纯字母的行便过滤掉,例如 sdlfjlkjlksjdklfjlskdf 这样的字符将被过滤,如果是sdfksjdkf99999这样的形
 式则过滤不了。
 注意,纯字母的行不能有空格,不论行首行尾或者是行中都不能有空格,否则过滤失败!例19
 findstr "[^add]" 123.txt
 过滤仅含有由a d d三个字母组成的纯字母字符串的行。 
 如:
 a
 ad
 ddaadd
 dd
 这些行都会被过滤。
 注意,仅含有由a d d三个字母组成的纯字母字符串的行不能有空格,不论行首行尾或者是行中都不能有空格,否则
 过滤失败!例20
 findstr "[^echo]" 123.txt
 过滤仅含有由e  c  h  o 四个字母组成的纯字母字符串的行。 
 如:
 e
 c
 ec
 cho
 chooo
 这些行都会被过滤。
 ------------------------------------------------------------------------------------------------------●单词前缀后缀定位规则,即\<xyz和xyz\>
该xyz可以是英文单词或数字,但不适用于汉字。符号 \ 理解为转义符,化解小于号和大于号的重定向命令含义。
 该规则是匹配类似单个英文单词的。例21
 findstr "\<echo" 123.txt
 所有含有以echo为前缀的字符串的行,都匹配。
 如:
 echo:kkk a add 
 jjkk echo
 这两行都匹配。
 (思考:为什么:echo也匹配?)例22
 findstr "echo\>" 123.txt
 所有含有以echo为后缀的字符串的行,都匹配。
 如:
 qq bbecho 这一行也匹配。 
 (思考:为什么kkkk echo:也匹配?)例23
 findstr "\<end\>123.txt
 这里是用来精确查找单词。查找单词end的行,
 注意:
 ended
 cdkend
 bcd-end-jjkk
 这类词都不匹配。
 (思考:为什么end echo和end也匹配?因为\<xyz\>格式要查找的是单个英文单词。)
 ------------------------------------------------------------------------------------------------------● 转义符 \
 把表达式中的特殊字符(元字符)转化为普通字符。常见写法:
 \. 
 \* 
 \\ 
 \[ 
 \]??
 \- 例24
 findstr "\.abc" 123.txt
 在文件123.txt中查找可以匹配“.abc”字符串的行,这里\。是把。给转义了。例25
 findstr "1\\" 123.txt 或findstr "1\\\\" 123.txt
 在文件123.txt中查找可以匹配“1\”字符串的行,这里\\是把\给转义了。★要查找的字符串含有\时,可以用\\把\给转义;或者把\变成\\\\。如果目标字符串的\后面还有内容,则搜索字符
 串\除了要变成\\(本身的转义要求),还可以在它后面再加一个字符,如\\.