检查 bat 文件中的多个 if 条件/以及 bat 中的运算符

检查 bat 文件中的多个 if 条件/以及 bat 中的运算符

我想要这样的东西:- if %ERRORLEVEL% GEQ 1 && %ERRORLEVEL% neq 255 GOTO Not closed by user。但是这种语法不起作用。

答案1

那这个呢?当然需要 XP 或更高版本...

if %errorlevel% GEQ 1 (
  if %errorlevel% NEQ 255 goto :NotClosed
  ::other statements go here, if you need 'em
  ::don't forget to close the parenthesis on the last statement ->)

进一步澄清:

if %errorlevel% EQU 0 (
  ::commands you want to perform if 0 go here. Notice ->) 
else (
  ::We got here because errorlevel was GEQ 1 or less than one...watch out
  ::if you program returns negative errorlevels!
  if %errorlevel% NEQ 255 goto :NotClosed
  ::other statements go here. But don't forget the parenthesis ->)

答案2

为了完整起见,以下是JP Software 的 TCC/LE(也可以运行此类脚本的命令解释器),它支持 JSanchez 答案中的语法,以实现向下兼容,但也有自己的两个更好的替代方案。

替代方案是……

… 它自己的多行iff命令

iff %ERRORLEVEL% GE 1 then
  iff %ERRORLEVEL% NE 255 then
     goto :NotClosedByUser
  endiff
endiff

使用括号复合命令时iff,不必担心变量扩展“太快”发生。

… 带有逻辑运算符的复合表达式

if %ERRORLEVEL% GE 1 .and. %ERRORLEVEL% NE 255 goto NotClosedByUser

这样做的好处是几乎与问题中想要的完全相同。TCC 甚至支持GEQNEQ兼容性。是的,它不需要goto命令中的冒号。

进一步阅读

相关内容