在Windows批处理文件中,在if-else块中重新设置变量不起作用

时间:2019-05-03 04:34:36

标签: windows batch-file variables if-statement set

我有下面的代码,尝试在if-else块中重新设置变量“ name”:

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

在win10的cmd下,输出:

aa
kk
case2
name=kk

这很奇怪,我希望最后一个回显能够打印出来:

name=ll

似乎“设置名称= ll”无效。因此,您能否帮助解释为什么它没有按我预期的那样工作以及如何解决?

1 个答案:

答案 0 :(得分:3)

您需要一个delayed expansion

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