繁体   English   中英

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

[英]Windows echo command can't echo a user-set variable

搞砸我的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_value包含在其中。

另一方面:

  • var_name开头的空格不包含在其中,这对于命令行参数通常是正常的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM