2017-07-03 97 views
1

我使用批处理和WinSCP连接到FTP服务器并自动上传一些文件。最近一次密码更改后,我遇到了密码包含特殊字符的问题,这些特殊字符不允许我连接到服务器。使用批处理将字符串转换为WinSCP会话URL

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

转换的forebidden人物不应该是理论上的一个问题。我用下面的代码将字符串转换与%字符:

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的要求?我如何编码字符串?

+0

部分可能是在这两个例子中的第二个'set'命令正在评估一个叫做'测试变量:'你没有定义。它也会出现,你可能有一个变量'25'定义值为'5'(这是一个惊喜)。你可以尝试echo'%25%'并看看你是否得到了'5'。 (然后'设置25 ='将清除它)。看看是否有帮助:https://stackoverflow.com/questions/37333620/special-characters-in-batch-file – GregHNZ

回答

1

转义目的地和批次内容是不同的事情, 保持单一的%不被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"