我从用户那里阅读了deploy_landscape:
IF "%deploy_landscape%" == "Europe_Canary--LP_Performance" GOTO abcd
:abcd
(
echo Inside the second loop
set landscape=lpitstw7186bb8d
echo Landscape is %landscape%
GOTO EXIT
)
我得到输出为
Landscape is
我没有看到正在打印景观的实际价值。
我还尝试了set landscape="lpitstw7186bb8d"
和set "landscape=lpitstw7186bb8d"
答案 0 :(得分:1)
您需要阅读delayed expansion
上的一些SO文章 - 其中有很多。
在块语句(a parenthesised series of statements)
中,解析整个块并执行然后。块中的任何%var%
将在解析块时被该变量的值替换 - 在块执行之前 - 同样的事情适用于{{1 }}
因此,FOR ... DO (block)
将在遇到IF (something) else (somethingelse)
时使用%variables%
的值执行。
解决此问题的两种常见方法是1)使用IF
并使用setlocal enabledelayedexpansion
代替!var!
来访问已更改的%var%
或2}值以进行调用一个子程序,用于使用更改的值执行进一步处理。
请注意使用显示var
更改值的CALL ECHO %%var%%
。 var
显示,但遗憾的是RESETS错误级别。