Batch file 批处理脚本中包含多个命令块的if语句

Batch file 批处理脚本中包含多个命令块的if语句,batch-file,window,32-bit,Batch File,Window,32 Bit,我是批处理脚本的新手,一直在使用简单的IF-ELSE语句。但是当我在IF条件下使用多个命令块时,只有第一个命令被跳过,其他命令被执行。我无法理解这种行为。如果条件为false,则应跳过整个命令块并执行else部分。我错过什么了吗?这是我的剧本: @echo off REM Beginning of the Script SETLOCAL ENABLEEXTENSIONS SETLOCAL ENABLEDELAYEDEXPANSION if exist "C:\Program Files (x8

我是批处理脚本的新手,一直在使用简单的IF-ELSE语句。但是当我在IF条件下使用多个命令块时,只有第一个命令被跳过,其他命令被执行。我无法理解这种行为。如果条件为false,则应跳过整个命令块并执行else部分。我错过什么了吗?这是我的剧本:

@echo off
REM Beginning of the Script
SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION

if exist "C:\Program Files (x86)" ( 
    echo 64-bit Windows... 
    echo 2nd line
    echo 3rd line 
) ELSE ( 
    echo 32-bit Windows...
)
32位机器上的输出为:

2nd line
3rd line
32-bit Windows...

我只是在XP模式虚拟机中运行了它,您的示例脚本运行得非常好,只回显了
32位Windows…
。您确定没有过早地关闭生产脚本中的括号吗?FWIW,传统的批处理脚本使用
如果定义了程序文件(x86)
来测试窗口的位。您的脚本将按原样回显32位Windows…,无论发生什么情况。在64位Windows中,目录名中的
文件
(x86)
之间有一个空格。但是,如果要切换到
(如果已定义)
,并使用
setlocal EnableExtensions EnableDelayedExpansion
,则环境变量名称中没有空格,否则将创建整个环境表的两个本地副本,而不是一个。批处理文件不支持else语句。您需要第二个符合您的要求的if语句。
if[NOT]条件(command)ELSE(command)
是有效的语法模式@你错了。看到哇好知道谢谢更新