Jasypt 无法读取 windows 上的字面符号?

Jasypt unable to read literal ampersand on windows?

以下命令:

C:\users\xxx\jasypt-1.9.3\bin> ./encrypt.bat password=password input=test.com/test?v=v&w=w

抱怨不允许使用问号 ("&")。所以我尝试将其转义为 "&"^& 但 Jasypt 似乎剥离了 & 以及它之后的内容。

C:\users\xxx\jasypt-1.9.3\bin> ./encrypt.bat password=password input=test.com/test?v=v^&w=w
...
----ARGUMENTS-------------------
input: test.com/test?v=v
password: password
...
'w' is not recognized as an internal or external command,
operable program or batch file.

我要怎么做才能让 Jasypt 将其读作字面的 & 符号,或者这是 windows 的东西?

PowerShell的转义符是`(反引号),不是^,这是cmd.exe.

特有的

然而,未加引号 &元字符(具有特殊句法意义的字符)在两个个炮弹。

因此,为了确保 PowerShell 按原样通过 &./encrypt.bat,以下所有变体都有效(因为您的参数不包含对 PowerShell 变量 ($...) 的引用,"..."(可扩展(内插)字符串)和 '...'(文字字符串)可以互换使用):

./encrypt.bat password=password input=test.com/test?v=v`&w=w
./encrypt.bat password=password input=test.com/test?v=v"&"w=w
./encrypt.bat password=password input=test.com/test?v=v'&'w=w
./encrypt.bat password=password "input=test.com/test?v=v&w=w"
./encrypt.bat password=password 'input=test.com/test?v=v&w=w'

既然你说是./encryp.bat投诉的,言下之意是./encrypt.bat执行不力,没有使用"..."进一步处理它接收的参数,导致 cmd.exe 个元字符(例如 & 中断处理。

为了解决这个问题,您必须 另外 预期 cmd.exe 的转义需求,并在从 PowerShell 传递的参数中包含文字 ^

./encrypt.bat password=password 'input=test.com/test?v=v^&w=w'