批处理命令之find 和findstr

article/2025/9/16 13:45:08

find 作用:从文件中收索字符串

格式:find 参数 "字符串" 路径\文件名

参数: /V 显示所有未包含指定字符串的行。

/C 仅显示包含字符串的行数。

/N 显示行号。

/I 搜索字符串时忽略大小写。

/OFF[LINE] 不要跳过具有脱机属性集的文件。

当文件中包含要查找的字符串时,将返回这个字符串所在位置的整行内容。默认情况下是区分大小写的,若想要

不区分大小写就是用参数 /i 有时候,我们的需求并不是为了查找到某个字符串,而是要检测哪些行不含有特定的

字符串,这个时候,可以使用开关/v,用法为:find /v "Abc" test.txt,它表示查找那些不含字符串Abc的行(Abc要

区分大小写),如果不区分abc的大小写,那么,应该写成 find /i /v "Abc" test.txt。还有一点是find 支持查找通配

符文件。如 find "1" *.txt。

findstr 是find的扩展,功能更强大

格式:findstr 参数 字符串 路径\文件名

参数: /B 在一行的开始配对模式。 (就是指以字符串开头,begin 这样就方便了记忆)

/E 在一行的结尾配对模式。(就是指以字符串结尾,end 这样就方便记忆)

/L 按字使用搜索字符串。就是将后面的""里的当成一个字符

/R 将搜索字符串作为一般表达式使用。

/S 在当前目录和所有子目录中搜索匹配文件。

/I 指定搜索不分大小写。(英文:ignore 忽略)

/X 打印完全匹配的行。/x 是指完全匹配,就是说整行匹配,而不是含有关键字.

/V 只打印不包含匹配的行。(就是找出不包含字符串的)

/N 在匹配的每行前打印行数。(就是在输出行的前面加上原文件中的行数,英文:number)

显示的结果中冒号(:)是英文格式下的,在用for提取的时候需要注意!

/M 如果文件含有匹配项,只打印其文件名。(指定文件中输出含有字符串的文件名)

/O 在每个匹配行前打印字符偏移量。o开关的作用是告诉你每行第一个字符前的位置是该文件中的第几个字节

计算时别忘了文本中不可见的回车符合换行符将占两字节(某些文本中只占一字节)。还有空格键一个字符。

肯定听不懂。看例子:1.txt文件内容: 就三行三个c没有空格。输入:findstr /o c 1.txt 结果是:

c 0:c

c 3:c

c 6:c

怎么计算:第一行的c前没有字符所以是0.第二行的c前一行只有一个c算一个字符由于是第二行所以算一个回车

2个字符就是:1+2=3同理第三个c前有2个字符和2个回车:1*2+2*2=6.。

/P 忽略有不可打印字符的文件。(我不清楚,个人无法解释)

/C:string 使用指定字符串作为文字搜索字符串。

如:findstr /c:"a b" 1.txt 就会找出含"a b"的行并输出来(注意a和b中间有空格)

如果不用参数/c:findstr "a b" 1.txt 就会输出含有字母 a 或 b 的行。

/G:file 从指定的文件获得搜索字符串。 (/ 代表控制台)。

如:findstr /g:2.txt 1.txt 就是把1.txt中含有2.txt中任一行内容的行输出来。

上面的有点像:@echo off

for /f "delims=" %%a in ('type 2.txt') do (

findstr "%%a" 1.txt

echo.)

pause

(以上是自己试出来的,不保证正确)

/A:attr 指定有十六进位数字的颜色属性。请见 "color /?"(使用这个可以在dos上面搞出不同颜色的字,自己想想)

/F:file 从指定文件读文件列表 (/ 代表控制台)。

/D:dir 查找以分号为分隔符的目录列表

/OFF[LINE] 不跳过带有脱机属性集的文件。

除非参数有 /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\> 字位置: 字的结束

<和\>是单词锚定 ^是行首 $是行尾

注意的是:别把^,$和\<,\>弄混了一个是行一个是字。行开始与结束没什么好说的。而字的开始和结束就不一样了,例如:

1.txt里两行为"abcd" 和 "abcd e"用命令findstr "cd\>" 1.txt 两行都会出现,只要是连在一起(没被空格开)的

并以cd结尾的(不 要求是行尾)都满足。相当于文本中出现英语中以cd结尾的的单词了的行都会输出来。

 

举一些例子(来自网络):

1.findstr . 2.txt 或 findstr "." 2.txt 2.findstr .* 2.txt 或 findstr ".*" 2.txt

从文件2.txt中查找任意字符,不包括空字符或空行 从文件2.txt中查找任意字符包括空行和空字符

==================== ====================

3.findstr "[0-9]" 2.txt 4.findstr "[a-zA-Z]" 2.txt

从文件2.txt中查找包括数字0-9的字符串或行 从文件2.txt中查找包括任意字符的字符串或行

==================== ====================

5.findstr "[abcezy]" 2.txt 6.findstr "[a-fl-z]" 2.txt

从文件2.txt中查找包括a b c e z y字母的字符串或行 从文件2.txt中查找小写字符a-f l-z的字符串,但不包含g h I j k这几个字母。

==================== ====================

7.findstr "M[abc][hig]Y" 2.txt 8. ^和$符号的应用

从文件2.txt中可以匹配 MahY , MbiY, MahY等….. ^ 表示行首,"^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\>"这样就可以匹配了

14.吧1.txt文档中超过10个字符的行输出到2.txt

@findstr .......... 1.txt>2.txt

感觉好像2.txt里是少于10个字符的行,可是实际却是超过10个字符的行,包括10个字符。

以上内容转自:http://hi.baidu.com/bs0%D0%A1%B3%C2/blog/item/3f9c39ee0d29c0cbd439c94a.html

find比findstr更强的地方:

 1、统计含指定字符串的总行数。find /c "abc" test.txt可以统计test.txt中含有字符串abc的总行数,而findstr则没有直接提供该功能,需要配合for语句才能实现;

  2、find可以读取Unicode格式的文本,而findstr则不行;

  3、find可以过滤某些特殊字符,而findstr则不行,比如,我们在使用fsutil fsinfo drives语句查询磁盘分区的时候,如果想让盘符分行显示而不是显示在同一行上的时候(这在用for语句提取盘符的时候很有用),find可以大显身手,而findstr只能干瞪眼了,具体语句为: 代码: fsutil fsinfo drives|find /v ""

好文要顶 关注我 收藏该文  


http://chatgpt.dhexx.cn/article/hqA8aI9G.shtml

相关文章

pygame安装教程(python)

1&#xff0c;安装好python。 2&#xff0c;打开cmd 3&#xff0c;输入&#xff1a;pip --version 如果显示未安装pip&#xff0c;那么输入pip。 等待安装完毕。 检查pip是否安装&#xff1a;pip --version 4&#xff0c;输入&#xff1a;pip install pygame 可能会出现这种错…

pygame安装教程(window)

来自一个初学者的疯狂吐槽&#xff0c;最近在学python设计游戏&#xff0c;要安装pygame。这他娘的&#xff0c;安装一个这个&#xff0c;能把刘某人老命要了&#xff0c;各种资源以及资料&#xff0c;各种尝试&#xff0c;各种装不上&#xff0c;各种错误&#xff0c;各种乱七…

Windows Pygame 安装教程 (自己识别版本号并下载)

最近在自学python&#xff0c;准备写个小项目&#xff0c;这个项目需要安装pygame&#xff0c;书中有给出了两个下载链接&#xff1a;https://bitbucket.org/pygame/pygame/downloads/和http://www.lfd.uci.edu/~gohlke/pythonlibs/#pygame。 自己也尝试下载了两个版本可是提示…

Python之pygame安装教程

首先把Python进行安装好。配置两个环境变量: 在系统变量中找到path&#xff0c;加入Python和pip的安装目录。打开cmd&#xff0c;输入Python&#xff0c;检查Python是否配置成功&#xff0c;如跟图1一样说明配置成功。关闭cmd&#xff0c;重新打开&#xff0c;键入pip&#xff…

python-pygame安装教程

网上有很多关于python&#xff0c;pygame的安装教程。大都比较麻烦&#xff0c;下面为大家介绍一种非常简单的安装方法。&#xff08;因为安装大都是新手教程写详细一些&#xff09; python是32位 python是3.6 1 pip配置 安装好python后&#xff0c;配置环境变量。 安装pygame需…

python没有pygame_pygame安装教程全程详解

1、python --version 查看安装的Python版本, pip --version 查看安装的pip版本, 升级pip命令: python -m pip install --upgrade pip 如果已经下载了安装文件就使用:pip install 文件名 如果没有下载就使用:python -m pip install --user 模块名,系统自动下载 2、如果没有…

python安装pygame的命令是什么_Python的pygame安装教程详解

简介 关于Pygame的基本信息&#xff0c;pygame是什么&#xff0c;谁会被Pygame吸引&#xff0c;并且在哪里找到它。 Pygame是被设计用来写游戏的python模块集合&#xff0c;Pygame是在优秀的SDL库之上开发的功能性包。使用python可以导入pygame来开发具有全部特性的游戏和多媒…

Pygame安装教程及基本配置(详细图文)

1、python --version 查看安装的Python版本&#xff0c; pip --version 查看安装的pip版本&#xff0c; 升级pip命令&#xff1a; python -m pip install --upgrade pip 如果已经下载了安装文件就使用&#xff1a;pip install 文件名 如果没有下载就使用&#xff1a;python …

Pygame 安装教程

实验周用 Python 写个小游戏&#xff0c;需要用到 Pygame &#xff0c;记录一下安装过程。 一、下载文件 先去官网下载文件。我选的是 Pygame1.9 版本&#xff0c;因为去图书馆借了本书&#xff0c;是按照 Pygame1.9 版本进行讲解的&#xff0c;如果用 Pygame2.X &#xff0c;…

python安装pygame教程_pygame 安装教程

步骤&#xff1a; 1.去官网下载PyGame 注意&#xff1a;要下载对应版本的包 其中&#xff0c;如果python为以下版本&#xff1a; &#xff08;cp36就是python3.6的意思&#xff09; 2. .exe文件直接安装 .whl文件启动doc命令安装&#xff1a; 在文件所在位置打开doc界面…

pygame安装教程(小白入手)

** pygame安装教程&#xff08;小白入手&#xff09; ** 1.在python官网上下载pygame 官网url 点击pypi 在搜索框输入pygame 点击搜索 点击对应的版本&#xff08;选择第一个&#xff09; 看到对应的图标&#xff0c;点击下载 2.pygame版本的选择 上一步骤点击下载之后…

IDEA 设置背景颜色为黑色

黑夜给了我黑色的眼睛我却用它来寻找光明。既然是黑色的眼睛那就设置一波黑色背景吧。在黑色额背景中寻找光明。 设置步骤&#xff1a; File->Settings->Appearance&Behavior->Appearance 就是如此的简单迅速&#xff0c;黑色诱惑一波。 就很nice&#xff01;&a…

IDEA设置背景颜色(护眼色)

在开发的时候&#xff0c;眼睛一直盯着开发工具难免会眼睛干涩&#xff0c;时间长了造成视力疲劳&#xff1b;绿色又是公认的护眼色&#xff0c;三步将你的IDEA设置为护眼色 看起来是不是舒服了点

设置idea的背景颜色为护眼的绿色

按照图片中的1-6的步骤点击 1.file 2.setting 3.editor 4.color 5.color sheme 6.genneral 7.default text 然后设置背景色 设置完成后的背景色 我的RGB比例是 217 242 208 觉得好用的&#xff0c;可以采纳

IDEA如何设置背景色?

由于开发需要长期盯着电脑&#xff0c;比较多的人喜欢使用黑色的背景色&#xff0c;因为黑色背景相比白色没这么刺眼&#xff01;最主要的是看着够酷炫&#xff01; 更改IDEA的背景色步骤如下&#xff1a; 第一步&#xff1a; 打开IDEA&#xff0c;点击左上角的File&#xff0…

IntelliJ IDEA-2017版设置背景颜色

国庆中秋临近&#xff0c;我在这里提前祝各位国庆、中秋快乐。废话不多说&#xff0c;接下来我来分享干货&#xff0c;哈哈。 第一步&#xff1a;打开IntelliJ IDEA 编辑器&#xff0c;点击“File”, 并选择"Settings...". 图一 第二步&#xff1a; 找到"Editor…

IDEA 设置背景图片及透明背景

准备工具 首先&#xff0c;要准备好IDEA和一个对象 打开idea File—>settings—> Appearance & Behavior 如图 在image中输入文件路径&#xff0c;注意要包含文件名&#xff1b; Opacity可以调解图片的对比度&#xff0c;数值越高&#xff0c;图片越清晰&#x…

IDEA左侧project导航栏设置背景色

IDEA左侧project导航栏如何设置背景色 IDEA如何设置代码背景豆沙色 IDEA如何设置光标所在行背景色 idea如何设置控制台背景色 最近几天眼睛莫名的很疼&#xff0c;买了两瓶进口的眼药水&#xff0c;有点效果&#xff0c;虽然将idea的代码编辑区背景色设置成了苹果色"#CCE…

IDEA的设置(背景颜色、字体大小、注释颜色)

1.背景颜色修改&#xff1a; 2.修改字体和大小&#xff1a; 3.修改注释颜色&#xff1a;