注意:由于OP是一个新用户,我正在用可复制的细节编辑问题,这样它就不会关闭。这是一个很好的问题,但最初令人困惑。
Windows用户名为:jhon^smith
ECHO %username%
output : jhonsmith
我的期望:
jhon^smith
如果我使用:
echo "%username%"
则输出为:
"jhon^smith"
如何删除双引号,但保留插入符号,这实际上是用户名的一部分?
这应该有效:
for /f %a in ("%username%") do echo %a
输出:
jhon^smith
(顺便说一句:应该拼写为john^smith
,但没关系。(
说明:
在命令echo %username%
中,cmd.exe
将%username%
替换为其实际内容,因此该命令变为echo jhon^smith
。然后对其进行解析,^
被处理为转义符,因此它将^s
替换为s
。
在命令for /f %a in ("%username%") do echo %a
中,带引号的字符串被视为没有引号的字符串,并且不执行对^
的解析。键入for /?
了解更多详细信息。