在Windows上,一些批处理文件使用具有多行的IF语法,如下所示:
if var==rule (
some comands
) else (
else commands
)
现在,Windows Vista x64决定将所有32位文件放在“C:\Program Files (x86)”下。不幸的是,每当您在多行IF中使用环境变量(如PATH)而没有加引号时,变量值中的括号会让IF混淆,从而中止批处理文件。例如:
if "%OS%"=="Windows_NT" (
@setlocal
call :set_home
set _ARGS=%*
) else (
set _SCALA_HOME=%SCALA_HOME%
rem The following line tests SCALA_HOME instead of _SCALA_HOME, because
rem the above change to _SCALA_HOME is not visible within this block.
if "%SCALA_HOME%"=="" goto error1
call :set_args
)
即使未执行%SCALA_HOME%出现的行,带有此内容的批处理文件将失败。这真是令人恼火。是否有解决方案?
setlocal enableextensions enabledelayedexpansion
即可。 - Patrick Cuff