2017-10-30 25 views
0

コマンドライン引数を使用してタスクを実行するバッチスクリプトがあります。しかし、 "%2"もURLに含まれているため、urlには%2があるはずの2番目のコマンドライン引数も貼り付けられます。コマンドライン引数を維持しながらこのシナリオを回避するにはどうすればよいですか? 1つの解決策は、コマンドライン引数を変数として格納し、次に元の%2を破棄することですが、これを達成する方法はわかりません。バッチパラメータの回避策%

これはsetlocalとendlocalのケースですか?もしそうなら、どうやってコマンドライン引数を変数名として保存すれば破壊できますか?コマンドライン引数を格納したら、コマンドライン引数をオフにすることもできます。これを行う方法に関するアイデア?

私はこのスタックオーバーフローの質問How can I URL-encode spaces in an NT batch file?に導かれています。しかし、これが私が探しているものであるかどうかはわかりません。この質問では、OPはバッチパラメータ呼び出しにURLを含めることを望んでいたようです。 %1 = username、%2 =パスワード、%3 = fullnameのままにし、スクリプト内のURLに貼り付けることなくスクリプトでそれらを参照するバッチパラメータ呼び出しが必要です。私はwget経由でURLにアクセスしており、 "%20"はスペースとして使用されています。したがって、%2がどこにあっても、パスワードパラメータを "%2"にするのではなく、それを貼り付けています。私はこのスタックオーバーフローの質問が正しい方向であることを知っていますが、私はそこから解決策を立てることはできません。任意のヒントやヘルプ?

コード例:バッチスクリプト内

foo.bat foobar passwordforfoobar foobarfullname 

call wget.exe --keep-session-cookies --save-cookies="cookies.txt" --post-data="username=%1&password=%2" "www.foo.com" 

call wget.exe --load-cookies=cookies.txt "www.foo.com/search=2017%20Foo%20test" 
+0

可能な重複[どのようにNTのバッチファイルでI URLエンコードスペースができますか?](https://stackoverflow.com/questions/10218451/how-can-i-url-encode-spaces-in -an-nt-batch-file) –

+0

上記の編集を参照してください。これは非常に近いですが、進める方法がわかりません。私はバッチよりもずっと快適です。追加のガイダンスが必要であるとの私の謝罪。 –

+1

'%20'を' %% 20'に変更し、 'Call'の代わりに' Start'''を使うことを検討してください。あなたは2つしか使わずに3つのパラメータを渡したことに気付いていますか?そのコマンドに関する情報のためにプロンプ​​トに 'Start /?'と入力し、 'Shift /?'を見ている間は面白いかもしれません。 – Compo

答えて

0

ユーザーコンポURLに%% 20と完璧に実行されるコードと対になって(むしろ呼び出しより) "" Startを使用して提案しました。

call wget.exe --keep-session-cookies --save-cookies="cookies.txt" --post-data="username=%1&password=%2" "www.foo.com" 

Start "" wget.exe --load-cookies=cookies.txt "www.foo.com/search=2017%%20Foo%%20test"