2017-07-03 39 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"