2013-05-26 18 views
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个相同的代码在批处理脚本变量延迟扩展

实际输出:
如果你看到这个,它的工作

有人可以解释为什么输出不显示“如果你看到这个,是的2”以及?

回答

1

您在2之后有尾随空格,所以比较if "2 " == "2"(不等于)。

为了避免这种情况使用下面的代码:

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

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

 
set "VARY=before" 
if "!VARY!" == "before" (
set /a VARY=2 
if "!VARY!"=="2" echo If you see this, yes echo !VARY! 
) 
+0

非常感谢。愚蠢的我没有注意到空白处。 –

1

很简单。您第一次将VARY设置为2而不是2

为了避免这种情况总是使用语法set "VARY=2"

这句法只需从第一个到最后一个引号输入,最后一个引号之后的所有字符都将被丢弃。

相关问题