@echo off
pushd

setlocal enabledelayedexpansion enableextensions

set VARY=before
if "!VARY!" == "before" (
set VARY=2
if "!VARY!" == "2" @echo If you see this, yes echo !VARY!
)


set VAR=before
if "!VAR!" == "before" (
set VAR=1
if "!VAR!" == "1" @echo If you see this, it worked
)

popd

预期产量:
如果看到这个,是2
如果您看到此内容,它就起作用了

实际输出:
如果您看到此内容,它就起作用了

有人可以解释为什么输出也没有显示“如果您看到这个,是2”?

最佳答案

您在2之后有尾随空格,因此请比较if "2 " == "2"(不相等)。

为了避免这种情况,请使用以下代码:

设置“VARY =之前”
如果“!VARY!” ==“之前”(
设置“VARY = 2”
if“!VARY!” ==“2” echo如果您看到此消息,则为echo!VARY!
)

..并且如果您设置数字,则还可以使用“set/a”:

设置“VARY =之前”
如果“!VARY!” ==“之前”(
设置/a VARY = 2
if“!VARY!” ==“2” echo如果看到此消息,则为echo!VARY!
)

关于windows - 2个相同代码段中批处理脚本中延迟延迟扩展的不同行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16762772/

10-10 16:46