在cmd中转义特殊字符

17

我有一个Windows的.bat脚本,其中我尝试使用密码参数运行命令。 我想要使用的密码是~!@#$%^&*()_+|-=\][{}';:"/.>?,<

从我阅读这里得出的结论是,我应该使用^转义^&|\<>。 从我假设的来看,我应该用\"转义"

这给了我类似于这样的东西:

runme.exe /password:"~!@#$%^^^&*()_+^|-=^\][{}';:\"/.^>?,^<"

但是它不起作用 - 我的目标应用程序会响应登录失败。

我应该如何转义所有这些字符,以便能够在批处理中硬编码密码(现在忽略安全问题)?


https://dev59.com/L0rSa4cB1Zd3GeqPVVbw - Atara
所以你建议使用/password:~!@#$%^^^&*()_ + ^ | - = \] [{}';:“/.^>?,^<?不行。 - NOtherDev
3
%是特殊字符,%%似乎可以转义它。 - jon
仍然没有成功:/password:~!@#$%%^^^&*()_ + ^ |-= ^ \] [{}';:"/.^>?,^< - NOtherDev
仅为记录起见,我不得不使用“^”转义“;”,否则它会将“;”视为命令结束。 - Nikhil Agrawal
2个回答

17

在密码中加倍引号,并确保完整的密码也被括在引号内:

runme.exe /password:"~!@#$%%^^^&*()_+^|-=\][{}';:""/.>?,<"

成功了:/password:"~!@#$%%^&*()_+|-=\][{}';:""/.>?,<"(引号内没有额外的 ^)。非常感谢! - NOtherDev
如果你的密码中有%,请尝试使用%%代替。 更多信息请参见:http://www.robvanderwoude.com/escapechars.php - Paul Shiryaev

1

试一试,但如果 runme.exe 的参数解析器需要引号作为密码的字符串封装器,那么它将无法工作。如果您的密码中需要有引号,则 runme.exe 需要提供一种转义方式!

runme.exe /password:~!@#$%%^^^&*()_+^|-=\][{}';:"/.>?,<

还是没有成功。提供逃逸的方法是什么意思?不幸的是,我无法控制 runme.exe。您是在暗示 runme.exe 可能无法支持带有 " 的密码吗? - NOtherDev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接