В пакетном файле Windows, переустановить переменную внутри блока if-else не работает - PullRequest
0 голосов
/ 03 мая 2019

У меня есть код ниже, попробуйте переустановить переменную "name" внутри блока if-else:

@echo off
set name=kk
echo %name%
if "%name%"=="jj" (
echo case1
) else (
echo case2
set name=ll
echo name=%name%
)

Под cmd win10 выводит:

aa
kk
case2
name=kk

Это странно, я хотел бы, чтобы мое последнее эхо вывело:

name=ll

Кажется, "set name = ll" не работает. Не могли бы вы объяснить, почему это не сработало, как я ожидал, и как это исправить?

1 Ответ

3 голосов
/ 03 мая 2019

Вам нужно отложенное расширение

@echo off
setlocal enableDelayedExpansion
set name=kk
echo %name%
if "%name%"=="jj" (
  echo case1
) else (
  echo case2
  set name=ll
  echo name=!name!
)
...