2011-09-01 6 views

答えて

12

if "%var%"=="one" goto foo 
if "%var%"=="two" goto foo 
if "%var%"=="three" goto foo 
goto afterfoo 
:foo 
echo The number is between one and three (technically incorrect, since it includes the end points and thus is not between). 
:afterfoo 

あなたはより構造化されたアプローチが必要な場合:

if "%var%"=="one" set OneToThree=1 
if "%var%"=="two" set OneToThree=1 
if "%var%"=="three" set OneToThree=1 
if defined OneToThree (
    echo Foo 
) else (
    rem something 
) 
+0

figured =(。私はしばらくそれを乱用していました^&|しかし幸運はありません。 – Mechaflash

+2

このアプローチを使うこともできます:%% a in(one two three) "==" %% a "goto foo – Aacini

0

ゲーム後半でビットが、それにもかかわらず、この場合の仮定を誰もが質問に遭遇するのを助けるかもしれない。私は、これはエコーの組み合わせを使用しているやり方は、findstrのためにこの方法をパイプ:

(echo ":one: :two: :three:" | findstr /i ":%var%:" 1>nul 2>nul) && (
    echo The number is between zero and four 
) 

findstrのは外部コマンドですので、私は繰り返しの1000年年代を経ることがループ内でこれを使用しないことをお勧めします。そうでない場合は、複数のifを使用するのではなく、何をしようとしているのかを解決するはずです。また、 ":"の選択に特別なものは何もありません。var変数の値の一部である可能性の低いデリミタを使用してください。

似たような質問をしている他のリンクを指している人のおかげで、私はこの回答を投稿します。誰かがその質問に遭遇し、