0

在 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
4

1 回答 1

1

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

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

echo BOOBOO has been set to !BOOBOO!
echo BOOBOO part is !BOOBOO:~0,2!
于 2013-02-06T23:05:30.360 回答