2017-07-03 10 views
1

バッチとWinSCPを使用してFTPサーバーに接続し、いくつかのファイルを自動的にアップロードしています。最近パスワードを変更した後、パスワードに特殊文字が含まれているため、サーバーに接続できないという問題が発生しました。バッチを使用して文字列をWinSCPセッションURLに変換する

の特殊文字はここで見つけることができます:forebidden文字の変換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の要件を満たすために、指定された文字列をエンコードすることは可能ですか?どのように文字列をエンコードすることができますか?

+0

あなたの問題の一部は、両方の例における第二' set'コマンドは 'testという変数を評価していることかもしれません。 '5'という値で定義された変数' 25'を持つように見えます(これは驚きです)。 echo '%25%'を試してみて、 '5'が戻ってくるかどうか確認してください。 (そして 'set 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" 
関連する問題