批处理 查找字符串
前言
findstr,全英文find string,意为“查找字符串”;
/b,全英文begin,意为“开始”;
/e,全英文end,意为“末端”;
/l,literally,意为“照字面地”;引申为“去正则表达式”。
/r,regular,意为“有规律的”;引申为“正则表达式”。
/s,subdirectory,意为“子目录”;
/i,ignore,意为“忽略”;引申为“忽略大小写”;
/x,exactly,意为“恰好地”;引申为“完全匹配”;(一开始意为不是这个单词,不过HAT确实高明——之所以以e为缩写,是因为前面有了end的缩写,所以以第二个字母x为缩写)。
/v,invert,意为“反转、使颠倒”(感谢doupip的单词提供);
/n,全英文number,意为“数字”;引申为“行号”;
/m,merely,意为“只是”;
/o,offset,意为“偏移”;
/p,print,意为“打印”;
/off[line],意为“脱机文件”;
/a,attribute,意为“属性”;
/f,file,意为“文件”;
/c,case,意为“把几个字加起来”;引申为“全部字匹配”;
/g,get,意为“获得”;
/d,directory,意为“目录”;
class,类。
实践
没有参数的时候
材料:
Hello World
Hello Boy
hello ,good man.
goodbye!
@echo off
findstr "man" a.txt
值得注意的是这个是区分大小写的;
也就是说:
@echo off
findstr "Man" a.txt
是查找不到结果的。
那么如何不区分大小写?
不区分大小写
@echo off
findstr /i "Man" a.txt
显示行数
@echo off
findstr /n /i "Man" a.txt
结果:
@echo off
findstr /n /i "Man" a.txt
再来介绍find:
@echo off
find /n "hello" a.txt
![](https://img2020.cnblogs.com/blog/1289794/202005/1289794-20200506143944844-867291616.png)
#### 查找那些文件中含有那些字符
@echo off
findstr /m /i "hello" *.txt
![](https://img2020.cnblogs.com/blog/1289794/202005/1289794-20200506144326394-1524166074.png)
#### 查找开头元素和末尾元素
@echo off
find /n "^hello" a.txt
@echo off
find /n "hello$" a.txt
看过正则的都明白,不解释了。
然后你要查找完全匹配的就是:
@echo off
find /n "^hello$" a.txt
查找不包含某个字符的行
使用 /v
@echo off
findstr /v /i "hello" a.txt
结果
G:\test>test.bat
goodbye!
当前目录及子目录下文件内容中包含某字符串的文件名
代码:
findstr /ms "专业" *.txt
复制代码
效果:
找出当前目录及子目录下文件内容中包含“专业”的文本文件,并只显示其文件名。
总结
未完结,明天后续