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

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

我正在尝试类似的事情:

set pwd = abc&123
echo password %pwd%

我得到的结果是......

'123' is not recognized as an internal or external command, operable program or batch file. 
password abc

系统是这样的吗?或者这样的角色有逃脱的方法吗?

答案1

您需要做的是将密码括在双引号中,如下所示:

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

让我知道事情的后续。

答案2

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

set pwd=abc^&123
echo %pwd%

仍然失败,并且

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

在其中添加引号(由于使用了 & 符号,您无法通过for循环或字符串操作删除引号,因为这样会再次失败),这不是很好。

然而,

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

运行完美。

希望有所帮助。

答案3

从命令行参考帮助文件:

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

如果密码中有两个以上的字符需要处理,那么将整个密码放在引号中似乎比转义单个字符更容易。

答案4

我需要一个解决方案来解决&字符位置未知的情况,这似乎对我有用:

set "pwd=abc&123"
set "EchoablePassword=%pwd:&=^&%"
echo password %EchoablePassword%

并非所有命令都需要转义 & 字符!例如,如果您转义 & 字符,“if exist”命令将不起作用,但如果您不转义它,它将起作用。这就是我将变量命名为“EchoablePassword”的原因,因为在我的代码中只有 echo 需要转义“&”。

相关内容