【问题标题】:Windows echo command can't echo a user-set variableWindows echo 命令无法回显用户设置的变量
【发布时间】:2010-12-25 10:32:50
【问题描述】:

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

【问题讨论】:

  • 次要 nitpick:%time% 不是环境变量,而是动态评估的伪变量。
  • 请注意,set tt 显示变量值的原因是set var 显示所有变量 var 开头。您可能会注意到系统输出中tt= 之间的空格。此外,变量的值包括初始空间。例如echo last%tt % 将输出last name,这可能是我们想要的。

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


【解决方案1】:

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

set tt=name

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

echo %tt%

并查看您的输出。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 欢迎来到 Stack Overflow,请take the tour,确保您阅读How do I write a good answer? 并使用更多信息更新您的答案。
      • 这只是已接受答案(七年前)的(冗长的)副本。
      • 我不同意,这个问题得到了回答,但没有完全回答:据说 %tt % 是错误的……但它有效,它可以使用。所以现在它在这里显示,每个人。
      • 接受的答案显示了另一种有效的语法;但是,最初的陈述“set 命令不占用空格”是不正确的。这个答案(尽管它很冗长)解释了 set 命令在空格方面的实际工作方式的细微差别。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-28
      • 2012-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-02
      相关资源
      最近更新 更多