【问题标题】:Read / Echo Environmental Variable as Literal以文字形式读取/回显环境变量
【发布时间】:2016-09-03 00:02:30
【问题描述】:

非常基本,至少我是这么认为的。我在命令提示符中有这个字符串:

C:\>echo "start C:\Users\%USERNAME%\My Documents" >> Test.txt

我尝试了 %%USERNAME%%、'%USERNAME%'、'%'USERNAME'%' 和许多其他方法。批处理输出始终解析环境变量,而不是将其写为文本字符串。是否可以确保它将其读取为文本字符串而不是它解析为的环境变量?

【问题讨论】:

  • 您是在问如何将字符串“start C:\Users\%USERNAME%\My Documents”写入文本文档“test.txt”?
  • 是的,没有它解析环境变量 %USERNAME% 并完全按照您所说的方式编写它。
  • 从你标记它的批处理文件正确吗? "echo "start C:\Users\%USERNAME%\My Documents" >> Test.txt" 可以在命令行和批处理文件中使用。你有什么问题?你想把文件写在哪里路?在 C: 目录中?
  • 没有将用户名解析为另一个值。他们想要获取文字字符串 %username% 并将其放入文件中。

标签: batch-file command-line-arguments


【解决方案1】:
echo start ^"^" ^"C:\Users\^%username^%\my documents^" >> test.txt

这应该可以。

【讨论】:

    【解决方案2】:

    此命令在命令行与批处理文件中的工作方式不同。在批处理文件中,这是可行的:

    @echo off
    echo start "" "C:\Users\%%username%%\my documents" >> file.txt
    

    【讨论】:

      【解决方案3】:

      不知道为什么您的方法不起作用(我也无法使其起作用),但是如果您像这样分两部分进行回显:

      echo.|set /P="start C:\Users\%" >> Test.txt
      echo USERNAME%\My Documents >> Test.txt
      

      那么它应该可以工作。第一行是我在这里找到的:'echo' without newline in a shell script

      文档确实说 %% 应该输入文字 %,但显然放置 %USERNAME% 的规则具有更高的优先级。

      【讨论】:

      • 考虑扩展你的答案,向提问者解释为什么这会达到预期的结果,可能链接到文档。照原样,这只是微不足道的用处。
      猜你喜欢
      • 1970-01-01
      • 2017-03-06
      • 1970-01-01
      • 2023-03-29
      • 2017-04-30
      • 2019-07-27
      • 1970-01-01
      • 1970-01-01
      • 2012-09-05
      相关资源
      最近更新 更多