batch-file - 嵌套 IF 中的 Windows CMD %ERRORLEVEL%

标签 batch-file cmd

首先我想在 Windows 7 登录脚本中测试某个文件是否存在。如果(且仅当)是这种情况,我想测试是否存在某个注册表项。如果不是这样,我想做一些事情。所以这就是我想出的:

IF EXIST %SOME_FILE% (
    REG QUERY "HKCU\..." /v some_key
    IF %ERRORLEVEL%=="1" (
        do_some_stuff
    )
)

我遇到的问题是,如果文件存在,%ERRORLEVEL% 等于 0 - 如果注册表项存在,则不是。如果我不做文件测试,一切都很好。现在,我可以使用标签和 goto,但我并不是真正的 friend 。有(简单的)替代方案吗?

最佳答案

简单的解决方案?当然。 %variable%在代码块之前计算代码块。您需要的是延迟扩展,即变量内容的命令设置命令。

只需将其添加到文件的顶部,

setlocal enableDelayedExpansion

并在变量周围使用感叹号; !errorlevel!而不是百分号。

虽然,我完全同意西蒙卡特林的回答。

关于batch-file - 嵌套 IF 中的 Windows CMD %ERRORLEVEL%,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41983397/

相关文章:

batch-file - 批处理不会显示命令结果 : closes window too quickly too read

windows - 如何转义回声“用于存储在文件中?

windows - 编写包含反斜杠的文本字符串,变量赋值出现问题

javascript - node.js 调用外部 exe 并等待输出

windows - 在单个 If 条件下比较具有多个值的变量

batch-file - 在批处理脚本的for循环中重定向命令的输出

windows - 如何从批处理文件中只删除空目录

java - 无法找到或加载主类 Java,但 javac 可以工作

batch-file - 在打开 Internet Explorer 选项卡之前运行 tomcat

batch-file - 运行带有重音符号的BAT/CMD文件