Dos内联IF测试错误级别,不使用延迟扩展

时间:2013-01-19 21:15:46

标签: cmd call delayedvariableexpansion

无论如何,如果没有延迟扩展(一行,为了便于阅读而破坏),是否有以下操作?

%comspec% /v:on /c %windir%\System32\reg.exe import c:\temp\test.reg &
 if !errorlevel! neq 0 pause

如果是回声,我知道可以使用call,但似乎无法与if一起使用。

2 个答案:

答案 0 :(得分:4)

您可以使用条件执行: reg.exe import c:\temp\test.reg || pause
||表示失败时执行(即errorlevel neq 0)。

您可能还想尝试这个示例,看看它是如何工作的:

find "this" && echo found || echo not found - 它将通知您“此”是否在输入流中(除非您重定向,否则从键盘输入)。

答案 1 :(得分:2)

一种方法是使用这种旧语法:

%comspec% ... & if errorlevel 1 pause

在这种情况下,使用if语句的特殊变体,用于测试当前的错误级别状态。

另一种选择可能是:

%comspec% ... || pause

||命令分隔符roughly等同于& if !errorlevel! neq 0,即仅当前一个命令以非零退出代码终止时才执行后续命令。