Findstr 返回的错误级别代码不正确?

Findstr 返回的错误级别代码不正确?

有一个名为 myfile.txt 的文件包含字符串“hpxu”

进入命令提示符并输入:

findstr khry myfile.txt & echo %errorlevel%

第一次执行结果为0,第二次及后续执行结果为1。

出了什么问题?Windows 10 上也会出现这种情况

答案1

第一次运行时,该errorlevel值不会扩展为运行时值。

其次,你的第一个命令的值被扩展了。

在您的命令中,您需要告诉 cmd在运行时!expand!的值%variable/errorlevel%,否则它将假定当前值,该值出现在第一和第二个

你可以告诉 cmd (命令行解释器)使用以下命令执行此操作/v:on |or| /v

 cmd /v /c "findstr khry myfile.txt & echo\!errorlevel!"

在 bat 文件中使用EnableDelayedExpansion

@echo off 

setlocal EnableDelayedExpansion

findstr khry myfile.txt & echo\!errorlevel!

尝试花一些时间来更好地理解下面这个答案中的 cmd 的工作原理@dbenham并特别注意第 5 阶段

  • 批处理脚本解析器
    阶段 5)延迟扩展:仅当延迟扩展处于打开状态时,命令才不处于管道两侧的括号块,并且该命令不是“裸”批处理脚本(脚本名称不带括号、CALL、命令连接或管道)。

  • 命令行解析器:
    阶段 5)延迟扩展:仅当启用 DelayedExpansion 时:

相关内容