@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/