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

问题描述 投票:0回答:4

我做了什么搞砸了我的 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 命令由于某种原因不起作用。我可以很好地回显内置变量。在另一台电脑上尝试了一下,效果符合预期

windows batch-file cmd environment-variables windows-console
4个回答
74
投票

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

set tt=name

您在示例中所做的是设置一个环境变量

tt<space>
。考虑到这一点,你可以尝试这个:

echo %tt %

并查看您的输出。


10
投票

这里得到最多支持的答案,很久以前就被接受了,声称:

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
    开头的空格不包含在其中,这对于一般命令行参数来说是相当正常的。

6
投票

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


0
投票

接受的答案在我的 Windows 11 系统中不起作用!

set JAVA_HOME "C:\example"

成功了,并在我使用的命令行中打印结果:

echo $JAVA_HOME
© www.soinside.com 2019 - 2024. All rights reserved.