批处理文件中的特殊字符很让人头痛,但是我还没有找到合适的解决方法来正确转义我正试图传递给应用程序的字符串的前两个字符。
SET pass=^&AntiBatchfileString
A_Program.exe /pass=%pass%
我尝试过的事情:
:: Escaping the escape twice, first for ^, second for &.
SET pass=^^^^&AntiBatchfileString
echo %pass%
:: Combining escapes.
SET first=^^
SET second=^^&AntiBatchfileString
SET pass=%first%%second%
echo %pass%
:: Preventing expansion
SET first=^^
SET second=^^&AntiBatchfileString
SET pass=!first!%second%
echo %pass%
:: I got this to print correctly
SET "pass=^&AntiBatchfileString"
echo ^^%pass%
当我经过最后一个时,它仍然不接受登录,我不知道最终输出是什么。这让我想到,也许在将参数传递给应用程序时,它正在尝试进行另一个扩展,因此我也对其进行了引用。
SET "pass=^&AntiBatchfileString"
A_Program.exe "/pass=^^%pass%"
它仍然不起作用,我不确定此时我缺少了什么。