非常基本,至少我是这么认为的。我在命令提示符中有这个字符串:
C:\>echo "start C:\Users\%USERNAME%\My Documents" >> Test.txt
我尝试了 %%USERNAME%%、'%USERNAME%'、'%'USERNAME'%' 和许多其他方法。批处理输出始终解析环境变量,而不是将其写为文本字符串。是否可以确保它将其读取为文本字符串而不是它解析的环境变量?
非常基本,至少我是这么认为的。我在命令提示符中有这个字符串:
C:\>echo "start C:\Users\%USERNAME%\My Documents" >> Test.txt
我尝试了 %%USERNAME%%、'%USERNAME%'、'%'USERNAME'%' 和许多其他方法。批处理输出始终解析环境变量,而不是将其写为文本字符串。是否可以确保它将其读取为文本字符串而不是它解析的环境变量?
echo start ^"^" ^"C:\Users\^%username^%\my documents^" >> test.txt
这应该有效。
此命令在命令行与批处理文件中的工作方式不同。在批处理文件中,这有效:
@echo off
echo start "" "C:\Users\%%username%%\my documents" >> file.txt
不知道为什么您的方法不起作用(我也无法使其起作用),但是如果您像这样分两部分进行回声:
echo.|set /P="start C:\Users\%" >> Test.txt
echo USERNAME%\My Documents >> Test.txt
然后它应该工作。第一行是我在这里找到的:'echo' without newline in a shell script
文档确实说 %% 应该放入文字 % ,但显然放置 %USERNAME% 的规则具有更高的优先级。