bat知识点8_findstr

原创 2016年08月30日 17:41:15


1.概述
在文件中寻找字符串。


FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/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"。


findstr默认为“正则表达式模式”,加上/r参数也是“正则表达式模式”(换言之,/r参数有点多余)。
加上/l参数后,findstr转换为“普通字符串模式”(其实find就是这种模式、且只有这种模式)。


正则表达式的快速参考:
.        通配符: 任何字符
*        重复: 以前字符或类出现零或零以上次数
^        行位置: 行的开始
$        行位置: 行的终点
[class]  字符类: 任何在字符集中的字符
[^class] 补字符类: 任何不在字符集中的字符
[x-y]    范围: 在指定范围内的任何字符
\x       Escape: 元字符 x 的文字用法
\<xyz    字位置: 字的开始
xyz\>    字位置: 字的结束


2.实例
(1)findstr默认是区分大小写的,要想得到不区分大小写的结果,可以使用/i
a.txt-----------
Hello World
Hello Boy
hello ,good man.
goodbye!


执行1:
findstr "hello" a.txt
结果1:
hello ,good man.


执行2:
findstr "Hello" a.txt
结果2:
Hello World
Hello Boy


执行3:
findstr /i "Hello" a.txt
结果3:
Hello World
Hello Boy
hello ,good man.


(2)显示要查找的字符具体在文本哪一行
执行1:
findstr /n /i "hello" a.txt
结果1:
1:Hello World
2:Hello Boy
3:hello ,good man.


执行2:
find /n "hello" a.txt
结果2:
[3]hello ,good man.


注意:以上输出的冒号(:)和中括号([])


(3)查找包含了指定字符的文本
执行1:
findstr /m /i "hello" *.txt
结果1:
a.txt


注意:由于加上了/m参数,所以只列出包含指定字符的文件名。


(4)查找以指定字符开始或结尾的文本行
b.txt-----------
good hello
你好 hello world
Hello World
Hello Boy
hello ,good man.
goodbye!


执行1:
findstr /b /i "hello" b.txt
结果1:
Hello World
Hello Boy
hello ,good man.


注意:/b参数表示在开头查找。


执行2:
findstr  /i "^hello" b.txt
结果2:
Hello World
Hello Boy
hello ,good man.


注意:这里的正则表达式的元字符^表示“匹配行开始的位置”。


执行3:
findstr /e /i "hello" b.txt
结果3:
good hello


注意:/e参数表示在结尾查找


执行4:
findstr  /i "hello$" b.txt
结果4:
good hello


注意:这里的正则表达式的元字符$表示“匹配行结尾的位置”。


(5)查找完全匹配的行
执行1:
findstr /n /i "^goodbye!$" b.txt
结果1:
1:hello


执行2:
findstr /n /i /x "hello" b.txt
结果2:
1:hello


注意:/x参数表示打印完全匹配的行。


(6)查找不包含指定字符的行
执行1:
findstr /vni "hello" a.txt
结果1:
4:goodbye!


注意:/v参数表示只打印不包含匹配的行。


(7)用文本制定要查找的字符串
string.txt----------
^hello
world


c.txt------------
^hello
hello
hello hello
good hello
你好 hello 
Hello World
Hello Boy
hello ,good man.
goodbye!


执行1:
findstr /ig:string.txt c.txt
结果1:
hello
hello hello
Hello World
Hello Boy
hello ,good man.


从被忽略的“^hello”可以看出,在不加/l参数的前提下,用/g指定的搜索字符串中如果含有“元字符”,
则作为正则表达式使用,而不是作为普通表达式。


(8)只要求显示含有“far”这个单词的行
d.txt----------
far there
farthere
there
far
farm
farmer


执行1:
findstr "\<far\>" d.txt
结果1:
far there
far

bat知识点5_EnableDelayedExpansion

1.概述 延迟变量,全称延迟环境变量扩展。 定义: setlocal EnableDelayedExpansion set:设置  local:本地(环境变量)  enable:能...
  • haibo19981
  • haibo19981
  • 2016年08月22日 21:40
  • 108

bat知识点7_拷贝文件

1.概述 1.1.拷贝目录 XCOPY source [destination] [/A | /M] [/D[:date]] [/P] [/S [/E]] [/V] [/W]          ...
  • haibo19981
  • haibo19981
  • 2016年08月30日 17:40
  • 107

bat知识点9_type

1.概述 type为dos中的输出命令,可以用来输出ASCII码文本文件的内容。 格式: Type[盘符:][路径]〈文件名〉 使用说明: (1)显示由ASCII码组成的文本...
  • haibo19981
  • haibo19981
  • 2016年08月30日 17:41
  • 105

bat知识点3_for循环

1.for的定义 在批处理文件中基本用法 : for %%I in (command1) do command2  (1)for、in 和do 是  for 语句的关键字,它们三个缺一不...
  • haibo19981
  • haibo19981
  • 2016年08月19日 16:11
  • 146

BAT面试知识点

1.面向对象和面向过程的区别 面向过程 优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重...
  • u013246459
  • u013246459
  • 2017年06月11日 16:56
  • 121

bat知识点6_if

1.概述 if主要用来判断, (1)两个“字符串”是否相等 示例: set "str=this is a test" REM 检测变量%str%是否等于test,如果相等,显示OK,否则显示NO ...
  • haibo19981
  • haibo19981
  • 2016年08月22日 21:41
  • 90

bat知识点1_常用符号

1.@   一般在它之后紧跟一条命令或一条语句,则此命令或语句本身在执行的时候不会显示在屏幕上。 2.%、%% 百分号用在不同的场合,有不同的含义: 当百分号成对出现,并且其间包含非特殊字符时,一...
  • haibo19981
  • haibo19981
  • 2016年08月19日 15:54
  • 185

bat知识点2_截取字符串

1.定义 echo %var:~n,k%  %var  我们要从中要截取字符的字符串 ~  取字符标志符 n  相当于指针 k  我们将其理解为偏移地址 注意:指针和偏移地址都是从...
  • haibo19981
  • haibo19981
  • 2016年08月19日 16:10
  • 86

JS知识点整理

最基础语法有哪些? 基础语法几乎所有的语言差异不大,无非数据类型、操作符、控制语句、函数等,简单列举下。 5种基本数据类型 & 1种复杂的数据类型 JavaScript包含5种基本数...
  • mozhi111
  • mozhi111
  • 2016年11月02日 16:42
  • 501

web前端知识点整理

一,html+css基础 1-1 Html和CSS的关系 学习web前端开发基础技术需要掌握:HTML、CSS、JavaScript语言。下面我们就来了解下这三门技术都是用来实现什么的: 1....
  • wcr19910118
  • wcr19910118
  • 2014年12月19日 00:02
  • 367
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:bat知识点8_findstr
举报原因:
原因补充:

(最多只允许输入30个字)