Некоторые пакетные файлы в Windows используют синтаксис IF с несколькими строками, как показано ниже:
if var==rule (
some comands
) else (
else commands
)
Теперь Windows Vista x64 решила поместить все 32-битные файлы в папку «C:\Program Files (x86)». К сожалению, всякий раз, когда вы используете переменную среды (такую как PATH) внутри многострочного оператора IF без кавычек, круглые скобки внутри значения переменной сбивают с толку 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%, не будет выполнена. Это довольно раздражает. Есть ли решение для этого?