2017-11-06 16 views
0

現在、入力に応じて異なる機能を実行するプログラムを作成しようとしています。バッチファイル内のサブストリングの置換

私はユーザーからの入力を取得するためにsetコマンドを使用しており、ユーザーが正しい質問をしているかどうかをテストするif文を使用しています。これらはうまくいきますが、「どこ」と「ある」を取り除こうとすると、環境変数を定義していないと言います。

set /p input=- 
if not "%input:where=%"=="%input%" if not "%input:is=%"=="%input%" 
set %input:where=% 
set %input:is=% 
start www.google.com/maps/place/%input% 

基本的には、「入力」に残っている唯一のものが場所になるようにしています。たとえば、ユーザーが入力すると、 'where is paris'の左側にある 'paris'がGoogleマップで検索されます。 私はセット/を使用しました。コマンドのヘルプと私はかなり構文が正しいと確信しています。当然の

答えて

0
set INPUT=%input:where=% 
set INPUT=%input:is=% 

parispar ...

になりますが、サブルーチン言葉whereisを削除し、result

返す必要があります

call :remwi %input% 
start www.google.com/maps/place/%result% 

... 

:remwi 
set "result=" 
:remwiL 
for %%a in (where is) do if /i "%~1"=="%%a" goto remwis 
set "result=%result% %~1" 
:remwis 
shift 
if "%~1" neq "" goto remwiL 
:remLsL 
if defined result if "%result:~0,1%"==" " set "result=%result:~1%"&goto remLSL 
goto :eof 

を呼び出してみてくださいラベル:remLsLの後の2行は先頭のスペースfrを削除する必要がありますom result

+0

Googleマップを開始したときに表示されるように、結果を表示するようにする必要がありますか? – slimjim

+0

'result'の結果に先行スペースが含まれていたため、' google maps'の呼び出しは '結果www.google.com/maps/place/paris'になりましたスペースパリ。私は、先頭のスペースを削除するために少し微調整を追加しました。例えば、私はそのデータであなたのブラウザを動かそうとするとどういうことが起こるのか分かりませんでしたが、今は 'rio de janiero'をうまく扱うべきです。おそらく、 "start"引数を引用符で囲む必要があります。これは、ウサギの耳の余分なペアが必要になることを意味します(start "" http ... ") – Magoo

+0

'echo% result% 'は' ECHO is off 'と返されます。何故ですか? – slimjim

関連する問題