【问题标题】:Use batch to convert string to WinSCP session URL使用批处理将字符串转换为 WinSCP 会话 URL
【发布时间】:2017-12-06 09:43:38
【问题描述】:

我正在使用批处理和 WinSCP 连接到 FTP 服务器并自动上传一些文件。在最近更改密码后,我遇到了密码包含不允许我连接到服务器的特殊字符的问题。

特殊字符可以在这里找到:Session URL :: WinSCP

理论上,转换禁止字符应该不是问题。我使用以下代码来转换带有% 字符的字符串:

setlocal
SET test="Test % test"
set test=%test:%=%25%
echo %test%

脚本的输出是=5

所以% 有问题。我试图用%% 逃避%。因此我的代码如下所示:

setlocal
set test="Test %% test"
set test=%test:%%=%%25%
echo %test%

输出是5

是否可以对给定的字符串进行编码,以适应会话 URL 的批处理要求?如何对字符串进行编码?

【问题讨论】:

    标签: batch-file winscp


    【解决方案1】:

    从 WinSCP 5.19 开始,您可以使用不需要任何编码的 -username-password 开关,而不是在会话 URL 中包含凭据。

    open ftp://example.com/ -username=username -password=password
    

    【讨论】:

      【解决方案2】:

      转义目的地和批次内是不同的东西, 为了防止单个 % 被 cmd 解释,它必须加倍。

      @Echo off&SetLocal EnableExtensions EnableDelayedExpansion
      set test="Test %% test"
      set test
      set test=!test:%%=%%25!
      set test
      

      示例输出:

      test="Test % test"
      test="Test %25 test"
      

      【讨论】:

        猜你喜欢
        • 2014-05-30
        • 1970-01-01
        • 2018-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多