1. 官方详细:

findstr | Microsoft Docs

2. 目前暂时用到的语法:

findstr [一些选项] "字符串1 字符串2" 待查找的文件

3. 作用:

findstr以每行为一个对象,匹配到之后会默认打印包含匹配内容的那行

4. 参数说明:

  1. 第一个参数[一些选项],可以是
    1. /v打印没有被匹配到的行
    2. /c:字符串这时后面的"字符串1 字符串2"就不能写出来,而是完全匹配/c:字符串中的一个字符串; findstr默认是匹配字符串1匹配字符串2,就是匹配的字符串不能有空格,如果有空格,就得用/c:字符串
    3. /i忽略大小写进行搜索
    4. /m如果所有行中存在一行被匹配,则只打印这个文件名

5. 返回值

  1. 如果打印正确,则errorlevel为0
  2. 如果打印为空,则errorlevel为1
  3. 如果打印错误,则errorlevel为2

6. 实际应用

6.1. 配合>nul

因为实际中要查找的行中经常会有中文,而findstr默认打印行中文时,是会打印出错的 所以为了让执行后的errorlevel更好判断,通常把打印输出屏蔽掉,这样就不会打印出错,即在findstr命令后加上>nul 详见重新定向字符

6.2. 使用!将errorlevel取反

有时,我们需要找到错误,就返回1;找不到错误就返回0 这时我们就可以

  1. 或在findstr下一行紧跟set /a error=! %errorlevel%,然后对error变量进行判断
  2. 或在判断errorlevel的时候取反(使用not逻辑符或者使用neq比较符)
  3. 使用if not errorlevel 1(针对错误的代码)→较为推荐

6.3. 配合管道符|查找上一条命令的输出来判断错误

待检查的命令|findstr 错误关键字

7. 和iferrorlevel的配套模板

7.1. 找错误:

命令 2>&1 | findstr "错误关键字" >nul
if not errorlevel 1 (
错误处理
) else (
正确处理
)

7.2. 找正确:

命令 2>&1 | findstr "正确关键字" >nul
if errorlevel 1 (
错误处理
) else (
正确处理
)