Saludos
Estoy intentando comparar una variable con varios valores pero no lo consigo, algo estoy haciendo mal o no hago lo debido. Os enseño lo que he probado.
@echo off
if %var%=1,8,15 (goto :si) else (goto :no)
:si
echo la variable coincide con 1,8 o 15
:no
echo la variable no coincide
La variable está definida anteriormente, quiero decir que no está vacía sino sería fácil saber cual es el error =D
Luego también probé con for, pero tampoco me funcionó.
@echo off
for %%a in ("1","8","15") do (
if %var%=%%a (goto :si) else (goto :no)
)
:si
echo la variable coincide con 1,8 o 15
:no
echo la variable no coincide
En caso de que se pueda hacer sin el for preferiría hacerlo sin el, ya que creo quedará mas corto el code.
Gracias de antemano =)
Buenas.
El problema es simple, no podes comparar con varias al mismo tiempo.
Mira este @echo off
set /p var="Elija el numero de la variable > "
if "%var%"=="1" goto :si
if "%var%"=="8" goto :si
if "%var%"=="15" goto :si
goto :no
:si
echo la variable coincide con 1,8 o 15
pause
exit
:no
echo la variable no coincide
pause
exit
hay dos problemas:
1°- Para comparar, hay que usar dos veces el signo igual ( == en vez de = )
2°- Hay que comparar de uno en uno, si %var% es igual a 1, va a :si si es igual a 8 o a 15, tambien, y si no se cumple ninguno, continua con el codigo, o sea, que te manda a :no
3°- Si al final del :si no poner un "exit" te va a continuar con el :no , por eso agregué "pause & exit" al final del :si y :no
Bueno, ademas, agregue para que elijas el numero de la variable, a ver si funciona en todos los ejemplos.
El programa esta completamente funcional :P asi que no te va a dar problemas ese.
Nos vemos ;)
Si esa solución es la que apliqué yo, pero quería saber si hay una forma mas "limpia" de comparar una variable con varios valores.
Gracias igualmente =)
digo una idea seria hacer un seudocodigo que simule un vector aplicando polimetria :rolleyes:...pero la verdad esta tan sencilla la solucion que dio Diego_Schneider que no aplicaria nada ;D
Citarpseudocódigo que simule un vector aplicando polimetría
Si supiera lo que me estas diciendo =D
CitarSi esa solución es la que apliqué yo, pero quería saber si hay una forma mas "limpia" de comparar una variable con varios valores.
Pues eso =)
Modificando un poco tu código :rolleyes:
for %%a in ("1","8","15") do (
if %var%=%%~a (echo:Coincide) else (echo:No coincide)
)
if %var%=%%~a
Solo era ponerle el?! →~←
Vaya pues gracias. Voy a probarlo.
No, lo que pasa es que tu tenías puesto esto:
if %var%=1,8,15
Además, el símbolo de comparación es "=="
Si si, lo e modificado conforme lo e visto al comparar el tuyo con le mio =)
De todas formas no funciona muy bien igualmente, me explico con el código mejor:
@echo off
for %%a in ("1","8","22") do (
set dat=%date:~0,2%
if dat==%%~a (echo Coincide && pause > nul ) else (echo No coincide && pause > nul)
)
Bueno pues hoy estamos a día 22 y el code me saca que "no coincide" con los tres valores.
%dat%, no dat
for %%a in ("1","8","22") do (
set dat=%date:~0,2%
if %dat%==%%~a (echo Coincide %%a) else (echo No coincide %%a)
)
Ok ahora si, dejando el
Citarset dat=%date:~0,2%
fuera del for si que me funciona.
El código quedaría así:
@echo off
set dat=%date:~0,2%
for %%a in ("1","8","22") do (
if %dat%==%%~a (echo Coincide %%a && pause > nul ) else (echo No coincide %%a && pause > nul)
)
gracias Pablo =)
De nada, para eso estamos :P
@moikano→@
if %dat%==%%~a (echo Coincide %%a && pause > nul ) else (echo No coincide %%a && pause > nul)
Poner varias sentencias en una línea es un mal habito de programación.
Ouch =\
Entendido =)