我正在尝试类似的事情:
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 需要转义“&”。