2013-03-05 75 views
0

CMD似乎不识别我使用SET存储的任何变量。如果我运行这个批处理文件:CMD似乎不识别变量

@ECHO off 
SET /P name = What is your name? 
ECHO %name% 
PAUSE 
ECHO on 

我得到以下输出:

What is your name? steven 
ECHO is off. 
Press any key to continue . . . 

当我在命令提示符下运行线路2,然后3号线,它只是打印:

%name% 

我有什么配置不正确吗?我是否认为第2行应该创建一个应该在第3行中被识别的会话变量?

我搜索了,但我只能找到与IF块内的变量扩展有关的答案。这发生在我的IF/FOR/etc块之外。顺便说一下,这是Windows 7。我不确定从一个版本的Windows到另一个版本的cmd有多少变化。

回答

1

set指令的等号周围不能有空格。改变这种

SET /P name = What is your name? 

这个

SET /P name=What is your name? 

和你的问题就会消失。

+0

哇,我压根没想到检查。我知道它对空白很敏感,但我不知道它是那么敏感。 感谢您的快速回复。对于愚蠢的问题抱歉。 – sricks3 2013-03-05 23:06:03

0

因为我不能添加任何评论,我必须发布一个新的答案。信息:

“设置指令中的等号周围一定不能有空格。”

只是部分正确。准确地说,应该说:等号必须紧跟在变量名后面(在sricks3没有空格的情况下)。无论发生什么事之后等号将被用作输入提示的变量,包括空格,所以下面的代码也能发挥作用:

SET /P name= What is your name?