2017-06-19 16 views
1

私は手書きで手作業で行う必要なしに、特定のディレクトリ入力を電話設定にアップロードする簡単なバッチファイルを作成しました。バッチファイルを使用して間に空白を含む単語を渡す

@echo off 
set /p title= Contact name? 
set /p number= Contact phone number? 
start "" http://admin:[email protected]/!mod%%20cmd%%20FLASHDIR0%%20add-item%%20104%%20(cn=%title%)(e164=%number%)(h323=%title%) 

バッチファイルは変数を取得してから、開始コマンドに追加します。このようなスクリプトは動作し、電話インターフェイスにログインしてディレクトリ入力をアップロードします。

タイトルとしてJohnを入力し、数字として123456を入力すると、このリンクを持つ新しいブラウザウィンドウが表示されますhttp://172.31.2.214/!mod%20cmd%20FLASHDIR0%20add-item%20104%20(cn=John)(e164=123456)(h323=John)

バッチファイルが機能し、ユーザーはこのバッチを使用してディレクトリエントリを入力できます。しかし問題は、ほとんどのタイトルが複数の単語で構成されていることです。問題は、最初の変数の下にJohn Smithを入力すると、リンクは次のようになります: admin:[email protected]/!mod%20cmd%20FLASHDIR0%20add-item%20104%20(cn = John

2番目の部分(タイトル変数のスペースの後)が削除されます。スペース文字ではなく%20のバッチファイルを強制的に送信するにはどうすればよいですか?

答えて

1

あなたは%variable:old=new%と変数に別の文字列と文字列を置換することができます。そうすれば、スペースを何か他のものに置き換えるには%variable: =somethingelse%を使うことができます。

ただし、問題は、%記号を含む%20に置き換えようとしていることです。これは変数名として解釈されます。あなたが本当に%20なく+を使用したい場合は、hereを説明するようにパーセント記号をエスケープするdelayed expansionを使用する必要があります:

@echo off 
setlocal EnableDelayedExpansion 
set /p title= Contact name? 
set /p number= Contact phone number? 
set urltitle=!title: =%20! 
set urlnumber=!number: =%20! 
setlocal DisableDelayedExpansion 
start "" http://admin:[email protected]/!mod%%20cmd%%20FLASHDIR0%%20add-item%%20104%%20(cn=%urltitle%)(e164=%urlnumber%)(h323=%urltitle%) 
+0

助けてくれてありがとう!私は今問題を解決した;) – Demions

+0

うれしい私は助けることができる。この回答または他の誰かがあなたの問題を解決した場合は、それを合格とマークしてください。 – Lucidiot

1

URLエンコードスペースは、 +123 456123+456In a URL, should spaces be encoded using %20 or +?)になりますので、指定した文字列内のスペースを置き換えて、代わりに+を使用してください。

@echo off 
set /p title= Contact name? 
set /p number= Contact phone number? 
set urltitle=%title: =+% 
set urlnumber=%number: =+% 
start "" http://admin:[email protected]/!mod%%20cmd%%20FLASHDIR0%%20add-item%%20104%%20(cn=%urltitle%)(e164=%urlnumber%)(h323=%title%) 

あなたの代わりに%20としてスペースをエンコードしたい場合は、ここにあなたのコードは次のとおりです。

@echo off 
setlocal EnableDelayedExpansion 
set /p title= Contact name? 
set /p number= Contact phone number? 
set urltitle=!title: =%%20! 
set urlnumber=!number: =%%20! 
start "" http://admin:[email protected]/!mod%%20cmd%%20FLASHDIR0%%20add-item%%20104%%20(cn=%urltitle%)(e164=%urlnumber%)(h323=%title%) 
+0

リンクされた質問の中で最もupvoted答えは言う:「理論的には私はあなたが持っているべきだと思います'?'の前に '%20'、' example.com/foo%20bar?foo + bar'の後に '+'を追加します。この質問で使用されるパラメータは、すべてURLの一部です。 '? 'はありません。 –

+0

私の答えを更新しました。 – MichaelS

+0

助けてくれてありがとう!私は私の側でバッチファイルを修正し、今はそれが必要なように動作します。 – Demions

関連する問題