命令提示符中是否有'&'字符的转义符?


Answers:


9

您需要做的是将密码用双引号引起来,如下所示:

set pwd="abc&123"
echo %pwd%

让我知道事情的后续。


1
在某些情况下可能更可取的另一种选择是set "pwd=abc&123"
哈里·约翰斯顿

1
-1令人震惊的是,它有5票赞成票,这是错误的。Windows使用%var%或!var!您本可以轻松地对其进行测试。$ var在Linux中,如果您在Windows中回显$ var,它实际上是说$ var
barlop 2015年

1
@barlop:看到它是解决问题的另一行,所以我认为这并不重要。
哈里·约翰斯顿

7

我发现,结合martineau的答案和mastashake57的答案,效果最好。

set pwd=abc^&123
echo %pwd%

仍然失败,并且

set pwd="abc&123"
echo %pwd%

向其添加引号(您不能使用for循环或字符串操作删除引号,因为使用&符,它将再次失败),这并不是很好。

然而,

set "pwd=abc^&123"
echo %pwd%

完美运作。

希望能有所帮助。


+1。请注意,这将克拉置于环境变量中,即,将其设置pwdabc^&123。在大多数情况下,这可能正是您需要做的,但是如果您不知道发生了什么,它可能会让您失望。
哈里·约翰斯顿

@HarryJohnston我必须纠正您的拼写错误。关怀。顺便说一句,我知道ntcmds.chm提到了它,但是cmd /在哪里?是否提到有关插入符号是转义字符的文档?
barlop

@Barlop:就是这样;我把它和谐音混淆了。作为一般规则,/?仅提供摘要,而不提供全面的文档。
哈里·约翰斯顿

@barlop ,?插入符号是转义字符。
Pacerier,2015年

@Pacerier是的,插入符号是转义字符,没有人对此表示反对。并提到它是转义字符,在XP中附带的ntcmds.chm(ntcmds.chm中,是等效的在线microsoft.com/resources/documentation/windows/xp/all/proddocs/… ,也许以某种方式在线上有更多最新信息-可能还有更多命令)。我只是问/在哪里?(如果有的话),它表示插入符号是转义字符
barlop

7

从命令行参考帮助文件:

与符号(&),竖线(|)和括号()是特殊字符,当您将它们作为参数传递时,必须在其前加上转义字符(^)或引号。

如果密码中包含两个以上的字符需要处理,则似乎比将单个字符转义更容易。


和引号内的引号?
Pacerier,2015年

4

您真正需要的是:

set pwd=abc^^^&123
echo %pwd%

要么:

set "pwd=abc^&123"
echo %pwd%

说明:

由于&是特殊字符,因此必须使用进行转义^,导致^&

运行set pwd=abc^&123会将变量设置为value abc&123。此后,如果要运行echo %pwd%,就可以有效运行echo abc&123

但是echo abc&123却不能按预期工作,因为这&是一个特殊的字符。您可以通过添加引号来避免这种情况:echo "abc&123"但是您的输出也将包含引号字符。换句话说,使用引号并不是完全正确的解决方案。

您需要的是&在运行echo命令时对char 进行转义:

echo abc^&123

因此,变量需要包含value abc^&123。要将变量设置为value abc^&123,您需要转义特殊字符char ^&,从而导致:

set pwd=abc^^^&123

+1指出有必要逃脱插入符号
jmcg

效果很好,谢谢。该转义字符是不是在某些原因,DOC提到docs.microsoft.com/en-us/windows-server/administration/...
谢尔盖Smolnikov
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.