批处理 - Echo或变量无法工作

83

我有一个小批处理脚本:

SET @var = "GREG"
ECHO %@var%
PAUSE

当我运行它时,它会打印:

H:\Dynamics>SET @var = "GREG"

H:\Dynamics>ECHO
ECHO is on.

H:\Dynamics>PAUSE
Press any key to continue . . .

为什么无法打印@var的内容?我怎样知道@var是否已经设置?

3个回答

174

不要使用空格:

SET @var="GREG"
::instead of SET @var = "GREG"
ECHO %@var%
PAUSE

4
在Windows 10上,%@var%无法正常工作,应该使用%var%。 - nasch
@nasch,为什么%@var%不能工作?@可以像字母一样出现在变量名中,即使在Windows 10中也是如此。(只有当@位于命令行开头时,才具有特殊意义,并定义为不将其显式输出...) - aschipfl
@aschipfl 我不记得2019年的问题是什么了。可能我尝试了一种方法,它起作用了,而另一种方法则没有。 - nasch

31

尝试以下操作(请注意,VAR=GREG之间不应有空格)。

SET VAR=GREG
ECHO %VAR%
PAUSE

26
这让我想起了一个故事。有个人被雇来为一家鱼薯条店画招牌。店主不满意成品,说:“鱼和和和和和薯条之间需要留更多的空间。” - lockstock
5
我不明白。 - youcantexplainthat
3
@youcantexplainthat,答案在这里 - What are some examples of awkward sounding but grammatically correct sentences? - Wayne Bloss
5
“Fish” 和 “and” 之间以及 “and” 和 “chips” 之间需要增加更多的间隔。 - Peter

-1

我刚接触编程,也许在变量声明的末尾尝试加上分号?

SET @var="GREG":
ECHO %@var%
PAUSE

1
Cmd不使用任何“命令结束”标记。(顺便说一下:您说“分号”,但使用了冒号 - 可能是打字错误)。真正的问题是=周围的空格(如13年前已经回答的那样)。 - Stephan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接