2
@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”吗?

4

2 回答 2

1

这很简单。第一次设置VARY2而不是2.

为避免这种情况,请始终使用语法set "VARY=2"

这种语法只接受从第一个引号到最后一个引号的输入,最后一个引号之后的所有字符都被删除。

于 2013-05-26T19:50:38.503 回答
1

后面有空格2,所以比较if "2 " == "2"(不等于)。

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

设置“变化=之前”
如果“!变化!” ==“之前”(
设置“变化=2”
if "!VARY!"=="2" echo 如果你看到这个,是的 echo !VARY!
)

..如果你设置数字,你也可以使用“set /a”:

设置“变化=之前”
如果“!变化!” ==“之前”(
设置 /a 变化=2
if "!VARY!"=="2" echo 如果你看到这个,是的 echo !VARY!
)
于 2013-05-26T19:53:58.700 回答