【WINDOWS / DOS 批处理】findstr命令之参数详解(二)

发布于:2022-11-28 ⋅ 阅读:(490) ⋅ 点赞:(0)

findstr命令之参数详解(一)【共三篇】

findstr命令之参数详解(三)【共三篇】

目录

命令格式

【/B参数和/E参数】 

【/S参数】 

【/D:dirlist参数】

【/A:colorattributes】 

【总结】


命令格式

findstr [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/F:file][/C:string] [/G: file] [/D:dirlist] [/A:colorattributes] [strings] [ [drive:] [path] filename [ ... ] ]

/B参数和/E参数】 

 /B参数: 如果搜索文本位于行开头则匹配,B是begin的首字母。

 /E参数:如果搜索文本位于行末尾则匹配,e是end的首字母。

        示例

 a.txt的内容如下:

a b c
x y z
abc
xyz   //这是最后一行,但是末尾没有回车符,“z”不会被看作行末字符串

        运行  

C:\>findstr -b   a   a.txt      //命令一
a b c
abc

C:\>findstr   /b   ^a   a.txt   //命令二    这里/b参数可以省略
a b c
abc

C:\>findstr   /e   z   a.txt    //命令三
x y z

C:\>findstr   /e   z$   a.txt   //命令四   这里/e参数可以省略
x y z

C:\>findstr  /e   /c:z   a.txt        //命令五
x y z

        解析

  • 命令一:搜索开头为“a”的行,缺省值是/R参数指定搜索文本是正则表达式),“a”是正则表达式
  • 命令二:搜索开头为“a”的行,缺省值是/R参数指定搜索文本是正则表达式),“^a”是正则表达式
  • 命令三:搜索行末为“z”的行,缺省值是/R参数指定搜索文本是正则表达式),“z”是正则表达式
  • 命令四:搜索行末为“z”的行,缺省值是/R参数指定搜索文本是正则表达式),“z$”是正则表达式
  • 命令五:搜索行末为“z”的行,缺省值是/L参数指定搜索文本是文字字符串),“/c:z”指明“z”是文字字符串(不是正则表达式)

/S参数】 

 在当前目录及其子目录下的filename指定文件(即:在当前目录递归查找filename指定文件)中,查找strings(或/C:string指定的字符串)。

        示例

c:\out的目录结构如下:

C:\>tree /f out
卷 系统 的文件夹 PATH 列表
卷序列号为 B019-EC3F
C:\OUT
│  a.txt
│
└─ziDir
    │  a.txt
    │
    ├─other
    │      a.txt
    │
    └─sunDir
            a.txt

  c:\out目录下a.txt的内容如下:

one two three
11 22 33
a b c

 c:\out\ziDir目录下a.txt的内容如下: 

that is one!
x y z

c:\out\ziDir\other目录下a.txt的内容如下:

this is a book.

 c:\out\ziDir\sunDir目录下a.txt的内容如下:

two and one 
11 22 33

       运行

C:\>findstr /s  /d:out  one a.txt
  out:
a.txt:one two three
ziDir\a.txt:that is one!
ziDir\sunDir\a.txt:two and one

          解析

  • 只有c:\out\ziDir\other目录下a.txt中没有包含“one”,所以,该文件不会被输出,其它的a.txt文件被输出

/D:dirlist参数

  •  dirlist指定要查找的目录列表, 不同的目录以分号作为分隔
  • /s选项和/d选项一起连用时,/s选项会导致findstr命令在/d选项指定的所有目录中递归查找被搜索文件,例如:C:\>findstr   /s   /d:D:\second;C:\first   searchText   test.txt
    上述命令中,/s选项会导致findstr命令在/d选项指定的D:\second和C:\first目录中递归搜索test.txt,在找到的所有test.txt中,搜索searchText,并把匹配的行输出。
    【注意】/s选项和/d选项(其值不包括当前目录时)一起连用时,则不会在当前目录下递归查找。想要在当前目录和/d选项指定的D:\second和C:\first目录中递归搜索,需要使用下面命令:C:\>findstr   /s   /d:D:\second;C:\first;.   searchText   test.txt

        示例

 c:\out目录下a.txt的内容如下:

one two three
11 22 33
a b c

 c:\inner目录下a.txt的内容如下:

that is one!
x y z

        运行

C:\>findstr /d:out;inner one a.txt
  out:
one two three
  inner:
that is one!

         解析

  • c:\inner目录下a.txt和c:\inner目录下a.txt都包含“one”,故皆被匹配。

/A:colorattributes】 

 指定十六进制数的颜色属性,颜色属性由两个十六进制数字指定:第一个为背景,第二个则为前景。每个数字可以为以下任何值之一:

 如果没有指定/A:colorattributes参数,findstr命令会将使用 CMD.EXE 启动时的颜色,findstr无法把搜索文本以特殊颜色标记出来。

用法一:实现把包含搜索文本的文件名(包括目录名)以特殊颜色标记出来,但是,使用/m参数时,如果文件含有匹配项,则只打印其文件名,颜色标记就会再度消失。

用法二:使用/N参数显示行数时,指定行号的颜色属性

        示例

 c:\out目录下a.txt的内容如下:

one two three
11 22 33
a b c

        运行 

       

           解析

  • “/a:04”表明:背景色是黑色(十六进制为0),前景色是红色(十六进制为4)

总结

  findstr是DOS命令中比较复杂的一条命令,它之所以功能强大,是因为它具有以下特性:

  • 支持单目录、多目录搜索
  • 支持正则表达式,由于篇幅问题,本文未详述findstr命令的正则表达式用法, 详见

findstr命令之参数详解(三) 【共三篇】

  • 支持递归搜索

写作不易,如果您觉得对您有用,请 “在下面一圈三连”。 

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到