IF块内的设置和环境变量

时间:2013-02-06 22:46:55

标签: batch-file environment-variables dos

在if块中设置环境变量BOOBOO的值似乎没有设置它。但是,它在if块结束后设置。为什么if块中没有值?

在Microsoft Windows XP [版本5.1.2600] SP3上运行

echo BOOBOO is +++%BOOBOO%+++
echo step 1
setlocal enableextensions
IF "%BOOBOO%" == "" (
    echo step 2
    SET BOOBOO=xyz
    echo step 3
    echo BOOBOO has been set to %BOOBOO%
    echo BOOBOO part is %BOOBOO:~0,2%
    echo step 4
)
echo step 8
echo BOOBOO ends up as %BOOBOO%
echo step 9
EXIT /B 0

===

M:> t
BOOBOO is ++++++
step 1
step 2
step 3
BOOBOO has been set to
BOOBOO part is ~0,2
step 4
step 8
BOOBOO ends up as xyz
step 9

1 个答案:

答案 0 :(得分:1)

该值在IF块中设置,但您无法使用正常扩展查看更改,因为该值在分析时扩展,并且在执行IF命令之前立即解析整个块。因此,您将获得在进入IF块之前存在的值。

您已启用延迟扩展。你只需要使用它。

echo BOOBOO has been set to !BOOBOO!
echo BOOBOO part is !BOOBOO:~0,2!
相关问题