1. 官方详细:
2. 目前暂时用到的语法:
findstr [一些选项] "字符串1 字符串2" 待查找的文件
3. 作用:
findstr以每行为一个对象,匹配到之后会默认打印包含匹配内容的那行
4. 参数说明:
- 第一个参数
[一些选项],可以是/v打印没有被匹配到的行/c:字符串这时后面的"字符串1 字符串2"就不能写出来,而是完全匹配/c:字符串中的一个字符串; findstr默认是匹配字符串1或匹配字符串2,就是匹配的字符串不能有空格,如果有空格,就得用/c:字符串/i忽略大小写进行搜索/m如果所有行中存在一行被匹配,则只打印这个文件名
5. 返回值
- 如果打印正确,则errorlevel为0
- 如果打印为空,则errorlevel为1
- 如果打印错误,则errorlevel为2
6. 实际应用
6.1. 配合>nul
因为实际中要查找的行中经常会有中文,而findstr默认打印行中文时,是会打印出错的
所以为了让执行后的errorlevel更好判断,通常把打印输出屏蔽掉,这样就不会打印出错,即在findstr命令后加上>nul
详见重新定向字符
6.2. 使用!将errorlevel取反
有时,我们需要找到错误,就返回1;找不到错误就返回0 这时我们就可以
- 或在findstr下一行紧跟
set /a error=! %errorlevel%,然后对error变量进行判断 - 或在判断errorlevel的时候取反(使用not逻辑符或者使用neq比较符)
- 使用
if not errorlevel 1(针对错误的代码)→较为推荐
6.3. 配合管道符|查找上一条命令的输出来判断错误
待检查的命令|findstr 错误关键字
7. 和if和errorlevel的配套模板
7.1. 找错误:
命令 2>&1 | findstr "错误关键字" >nul
if not errorlevel 1 (
错误处理
) else (
正确处理
)7.2. 找正确:
命令 2>&1 | findstr "正确关键字" >nul
if errorlevel 1 (
错误处理
) else (
正确处理
)