2016-08-22 62 views
2

我是新来的Windows 10的64位和启动命令提示符,然后键入以下(设置变量,并在同一线路回声它):为什么一个SET不能在同一行的ECHO命令中保留?

H:\>set a="hello" & echo %a% 
%a% 

H:\>set a="hello" & echo %a% 
"hello" 

为什么我没有看到“你好”,我第一次回应'编辑它?

道歉,如果这是一个基本的问题,我似乎无法在网上找到答案。

+0

第一行不会在'echo'后面清除'a'。尝试'设置一个=“你好”&回声%a%&设置“a =”'验证。 – dxiv

+0

开始命令提示符并键入这三个分开的行:'set a =“one”&echo%a%',then'set a =“two”&echo%a%',then'set a =“three”&echo %A%'。然后,查看“延迟扩展”与%正常扩展的差异... – Aacini

+0

相关:[批量文件延迟扩展示例](http://stackoverflow.com/q/10558316) – aschipfl

回答

1

这是因为该线将在set命令之前被评估,所以在第一次运行%a%将被传递为是(字符串"%a%"因为a存在)。

评估变量后的第一行看起来像:

set a="hello" & echo hello 

运行的任何命令之前:

set a="hello" & echo %a% 

第二行会进行评估。

相关问题