Windows echo命令无法回显用户设置变量

时间:2009-12-10 21:15:39

标签: windows batch-file cmd environment-variables windows-console

我做了什么来搞砸我的CMD外壳? Windows XP专业版,打开一个cmd窗口并执行:

C:\>set tt = name

C:\>set tt
tt = name

C:\>echo %tt%
%tt%

C:\>echo %time%
14:13:28.67

由于某种原因,echo命令不起作用。我可以很好地回应内置变量。在另一台计算机上尝试过,并按预期工作

3 个答案:

答案 0 :(得分:29)

set命令不占用空格。正确的语法是:

set tt=name

您在示例中所做的是设置环境变量tt<space>。考虑到这一点,你可以试试这个:

echo %tt%

并查看您的输出。

答案 1 :(得分:5)

您是否尝试过设置变量,等号之间没有空格? (设tt =姓名)

答案 2 :(得分:3)

这里最受欢迎的答案,很久以前就被接受了,声称:

  

&#34; set命令不占用空格。&#34;

但这不正确:%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()

  • 之前的空间&#34; =&#34;包含在var_name
  • &#34; =&#34;之后的空格包含在var_value
  • var_value末尾的空格包含在其中。

另一方面:

  • var_name开头的空格不包括在内,这对于命令行参数来说是正常的。