En lote, ¿por qué “not” ignora el comando “si no” y ejecuta el siguiente código de cualquier manera?
echo Para comenzar, escriba start
echo Para ver opciones, escriba options
echo Para salir del juego, escriba quit
set /p input= Comando?
if %input% == start ir a Start
if %input% == options ir a Options
if %input% == quit ir a Exit
else (
ir a Menu
)
Básicamente, lo que debería hacer es escribir una de esas opciones hará que se vaya a esa parte del código, y escribir algo que no esté especificado hará que se ejecute ese script nuevamente. Esto funciona según lo previsto, pero mi problema es cuando escribo “no blah” (sin comillas, donde blah podría ser cualquier cosa) se ejecuta el script a pesar de no haber una acción especificada para blah en el código.
¿Por qué?
davy.ai
Esto probablemente se debe a que se está activando el comando
else
. El comandoelse
es un capturador de cualquier entrada que no se ajuste a las declaracionesif
. Esto significa que cualquier entrada que no coincida con las declaracionesif
será enviada al comandoelse
, que en este caso es el comandogoto Menu
.