if-statement - DOS 批处理文件中可以有 IF block 吗?

标签 if-statement batch-file

在 DOS 批处理文件中,我们只能有 1 行 if 语句主体?我想我在某个地方发现我可以使用 () 作为 if block ,就像在类似 C 的编程语言中使用的 {} 一样,但它不会执行以下语句:我试试这个。也没有错误消息。这是我的代码:

if %GPMANAGER_FOUND%==true(echo GP Manager is up
goto Continue7
)
echo GP Manager is down
:Continue7

奇怪的是,当我运行批处理文件时,“GP Manager is up”和“GP Manager is down”都没有打印出来。

最佳答案

您确实可以在条件语句之后创建一个要执行的语句 block 。但你的语法错误。括号的使用方式必须与所示完全相同:

if <statement> (
    do something
) else (
    do something else
)

但是,我不认为 else-if 语句有任何内置语法。不幸的是,您需要创建嵌套的 if 语句 block 来处理该问题。


其次,那个 %GPMANAGER_FOUND% == true 测试对我来说看起来非常可疑。我不知道环境变量设置为什么,也不知道您如何设置它,但我非常怀疑您所显示的代码是否会产生您正在寻找的结果。


以下示例代码对我来说效果很好:

@echo off

if ERRORLEVEL == 0 (
    echo GP Manager is up
    goto Continue7
)
echo GP Manager is down
:Continue7

请注意有关我的示例代码的一些具体细节:

  • 条件语句末尾和左括号之间添加的空格。
  • 我设置 @echo off 以避免在执行时看到打印到控制台的所有语句,而只看到那些专门开始的语句的输出与回声
  • 我使用内置的 ERRORLEVEL 变量只是为了进行测试。了解更多 here

关于if-statement - DOS 批处理文件中可以有 IF block 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4983508/

相关文章:

python - 创建 Windows 10 桌面快捷方式以在 venv 虚拟环境中运行 python 脚本

python - 如何从文件中打印特定行

delphi - 编译器如何处理 case 语句?

java - 让我的程序返回到 "top"(if 语句)(Java)

javascript - 为什么我的函数没有按预期显示和隐藏元素?

excel - 如果单元格包含字符串

java - Java实现文件上传类型

batch-file - 多次 ping 尝试后批处理崩溃

batch-file - 对/f 使用批处理时保留文本文件中的空行

internet-explorer - 一个reg如何通过批处理文件将十六进制值添加到Internet设置?