批处理文件中带有百分号的 WinSCP 密码

WinSCP password with percent sign in batch file

Py 远程 PC [其登录密码无法更改] 有一些特殊字符,特别是百分号 (%)。所以我写的WinSCP脚本无法登录。

根据this document,我尝试了以下操作,但没有成功。

我的密码是admin%^&。我按照上面的文档把密码修改成这样admin%25^&.

如何转义WinSCP登录的特殊字符?

C:\Program Files (x86)\WinSCP\WinSCP.com" ^
  /log="C:\!Y!M!D_Log.log" /ini=nul ^
  /command ^
    "open  sftp://admin:admin%25^&@137.55.111.1" ^
    "put *.* %REMOTE_PATH%" ^
    "exit" 

答案是你需要查看 UTF-8 图表并替换字符。

所以 admin%^& 现在是 admin%25%5e%26

^& 并不真的需要编码(虽然它不会造成任何伤害)。 % 的作用与您 %25 的正确作用相同。如果直接在 WinSCP 命令行上指定,它会起作用。实际问题是 % 在批处理文件 中也有特殊含义 ,不仅在 WinSCP 中。 %2 被批处理文件的第二个参数替换,甚至在 WinSCP 启动之前。如果没有向批处理文件提供(第二个)参数,WinSCP 会看到 admin5^&%2 消失)。

如果你想在批处理文件中直接使用%,你需要将它加倍:admin%%25^&.

简单的方法是使用 WinSCP GUI generate a batch file for you(请注意,即使 ^& 也会 [不必要地] 编码)。

WinSCP 常见问题解答中对此进行了介绍Why are some WinSCP scripting commands specified in a batch file not executed/failing?