在 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/