Windows echo 命令无法回显用户设置的变量
-
19-09-2019 - |
题
我做了什么搞砸了我的 CMD shell?Windows XP Pro,打开 cmd 窗口并执行以下操作:
C:\>set tt = name
C:\>set tt
tt = name
C:\>echo %tt%
%tt%
C:\>echo %time%
14:13:28.67
由于某种原因 echo 命令不起作用。我可以很好地回显内置变量。在另一台电脑上尝试了一下,效果符合预期
解决方案
在set
命令不采取空格。正确的语法是:
set tt=name
什么你已经在你的例子做的是设置环境变量tt<space>
。考虑到这一点,你可以试试这个:
echo %tt%
和看你输出。
其他提示
您是否尝试过与平等之间没有空间设置的变量? (集TT =名)
这里投票率最高的答案,很久以前就被接受了,声称:
“这
set
命令不占用空格。”
但这是不正确的:这 %tt %
变量实际上起作用:可以设置和引用。(尽管如此 是 令人困惑。)
问题重现:
确实,在我的Win7上:
C:\>set os
OS=Windows_NT
C:\>set tt = name
C:\>set tt2= name
C:\>set tt3=name
C:\>set tt
tt = name
tt2= name
tt3=name
我尝试并得到:
C:\>echo "%os%"
"Windows_NT"
C:\>echo "%tt3%"
"name"
C:\>echo "%tt2%"
" name"
C:\>echo "%tt%"
"%tt%"
已解决案例:
直观预期变量 %tt%
未设置。 但 %tt %
设置为:
C:\>echo "%tt %"
" name"
更重要的是,在值的末尾有一个空格, set tt4 = name
:
C:\>echo "%tt4 %"
" name "
结论:
这 set
命令不 trim()
:
- “=”之前的空格包含在
var_name
. - “=”后面的空格包含在
var_value
. - 末尾的空格
var_value
包含在其中。
另一方面:
- 开头的空格
var_name
不包含在其中,这对于一般命令行参数来说是相当正常的。
不隶属于 StackOverflow