2011-09-01 9 views

Respuesta

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 

Si necesita un enfoque más estructurado:

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 = (. Estuve jugando con eso por un tiempo tratando de engañarlo con algo aleatorio^& | pero sin suerte lol – Mechaflash

+2

También puede usar este enfoque: para %% a in (uno dos tres) do si "% var% "==" %% a "goto foo – Aacini

0

Un poco tarde en el juego, pero sin embargo si esto suponiendo podría ayudar a cualquiera a tropezar con la pregunta. A mi modo de hacerlo es usando una combinación de eco hilo a findstr, de esta manera:

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

Desde findstr es un comando externo, no se recomienda usar este dentro de un bucle que puede ir a través de 1000 de iteraciones. Si ese no es el caso, esto debería resolver lo que está intentando hacer en lugar de usar múltiples ifs. Además, no hay nada especial en la elección de ":", simplemente use un delimitador que es poco probable que sea parte del valor en la variable var.

Gracias al resto de personas que apuntan a otro enlace que parece tener una pregunta similar, publicaré esta respuesta allí también, en caso de que alguien se tropiece con esa pregunta y no llegue aquí.

Cuestiones relacionadas