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

jac*_*see 16 windows cmd batch-file environment-variables windows-console

搞砸我的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
Run Code Online (Sandbox Code Playgroud)

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

akf*_*akf 34

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

set tt=name
Run Code Online (Sandbox Code Playgroud)

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

echo %tt%
Run Code Online (Sandbox Code Playgroud)

并看到你的输出.


Fra*_*nta 7

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

“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
Run Code Online (Sandbox Code Playgroud)

我尝试并得到:

C:\>echo "%os%"
"Windows_NT"

C:\>echo "%tt3%"
"name"
C:\>echo "%tt2%"
" name"
C:\>echo "%tt%"
"%tt%"
Run Code Online (Sandbox Code Playgroud)

已解决案例:

%tt%未设置直观预期的变量。但是%tt %设置为:

C:\>echo "%tt %"
" name"
Run Code Online (Sandbox Code Playgroud)

更重要的是,在值的末尾有一个空格,set tt4 = name :

C:\>echo "%tt4 %"
" name "
Run Code Online (Sandbox Code Playgroud)

结论:

该set命令不会trim():

  • “=”之前的空格包含在var_name .
  • “=”后的空格包含在 var_value.
  • 末尾的空格var_value 包含在其中。

另一方面:

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

  • 接受的答案显示了另一种可行的语法;但是,最初的声明“`set` 命令不带空格”是不正确的。这个答案(尽管它很冗长)解释了`set` 命令实际上如何处理空格的细微差别。 (3认同)

Eri*_*ric 5

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