Переменные пакетной обработки Windows не устанавливаются

Кажется, я столкнулся с ошибкой в ​​пакетном сценарии Windows.

Я не могу устанавливать переменные в расширенном операторе if.

Вот изолированная часть моего скрипта:

@echo off

set success=1
set Version=12345
set Target=Client
set Type=456
set dir=
set zip=

if "%Version%"=="" set success=0
if "%Type%"=="" set success=0

if 1==1 set test=42

if %success%==1 (
    set test2=57005
    if "%Target%"=="Client" (
        set dir=ModName v%Version%
        set zip=ModName v%Version% %Type%.zip
        echo Version: %Version%
        echo    Type: %Type%
        echo.
        echo  Target: %Target%
        echo     dir: %dir%
        echo     zip: %zip%
        echo.
        echo    test: %test%
        echo   test2: %test2%
    )
) else (
    echo Not successful.
)

Это вывод совершенно нового экземпляра cmd:

C:\Users\RandomClown\Desktop>test.bat
Version: 12345
   Type: 456

 Target: Client
    dir:
    zip:

   test: 42
  test2:

На что следует обратить внимание, так это на то, что однострочный оператор if правильно устанавливает вещи. Многострочный оператор if выполнит все, что НЕ является набором. Я не думаю, что я что-то пропустил. Кроме того, многострочный оператор if правильно выполняет правильные строки, так как строки else ( echo Not Success. )не выполнены.

Почему строки не выполнялись?

47
задан corsiKa 5 March 2016 в 00:20
поделиться