2017-10-03 42 views
0

バッチプログラミングでは非常に新鮮ですが、私の問題を解決する答えが見つからないようです。 set /pコマンドをバッチファイルに含めるたびに、文字間のスペースを含むものを入力すると即座にプログラムが閉じられます。 は、ここで問題のコードです:set/p入力にスペースを入れるとバッチプログラムが自動的にクラッシュする

set /p action=">>" 
if not defined action goto nothing 
if /i %action% equ fight goto fight 
if /i %action% equ magic goto magic 
if /i %action% equ heal goto heal 
if /i %action% equ "do nothing" goto nothing 
goto battscr 

私は明らかに「何もしない」、入力に対する応答を作成しようとしているが、ユーザーの種類の文字の間にスペースたびに、すぐにEnterキーを押すと、それは閉じられます。 cmdを使用してバッチを実行すると、「この時点では何も予想外でした」というエラーが表示されます。空白の後の入力を参照する「何もない」。

+0

答えはあなたの画面に表示されます:「この時点では何も予期しなかった」の後、「何もしないでください」と表示されます。これは許される構文 'if/i string1 equ string2 ...'に従うことに注意してください。 –

+0

申し訳ありませんが、私はあなたの答えを理解していないようです。変数は%action%です。 'もし何もしないなら、goto fight fight'は、変数を等しい入力にしたいときは、「何もしない」が変数であるかのように振る舞います。また、バッチがcmdで実行され、 "この時点で何も予期しなかった"というエラーが表示された場合、即座にバットが閉じられ、C:ディレクトリにジャンプします。その後、バットに関しては何も起こりません。 – Jman0209

+0

注意したように、構文は 'if/i string1 equ string2'です - ' equ'の前の文字列は1つだけですが、2つを入れています。パーサーは、 '/ i'の後の2番目の単語が' equ'と期待していますが、代わりに 'nothing'です。 –

答えて

3

使用していずれかの構文:

IF /I "%VARIABLE%" EQU "STRING" GOTO LABEL 

、または好ましくは、この:

IF /I "%VARIABLE%"=="STRING" GOTO LABEL 

二重引用符は、比較に含まれています。

関連する問題