2011-09-01 12 views

risposta

12

No.

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 

Se avete bisogno di un approccio più strutturato:

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

figurato = (. Per un po 'stavo scherzando cercando di ingannarlo con random^& | ma senza fortuna lol – Mechaflash

+2

Puoi anche usare questo approccio: per %% a in (uno due tre) fai se "% var% "==" %% a "goto foo – Aacini

0

un po 'tardi nel gioco, ma comunque assumendo se questo potrebbe aiutare chiunque inciampa nella domanda. Il modo di fare questo sta usando una combinazione di eco convogliato FINDSTR, in questo modo:

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

Da findstr è un comando esterno, non è consigliabile utilizzare questo all'interno di un ciclo che può passare attraverso 1000 di iterazioni. Se questo non è il caso, questo dovrebbe risolvere ciò che stai tentando di fare invece di usare if multipli. Inoltre, non c'è nulla di speciale nella scelta di ":", basta usare un delimitatore che è improbabile che faccia parte del valore nella variabile var.

Grazie al resto della gente che punta a un altro link che sembra avere una domanda simile, inserirò anche questa risposta, nel caso in cui qualcuno si imbattesse in quella domanda e non raggiungesse abbastanza qui.