elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [batch] comparar una variable con varios valores
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [batch] comparar una variable con varios valores  (Leído 12,629 veces)
moikano→@


Desconectado Desconectado

Mensajes: 572


Cultiva tu mente y cuerpo, son tu única propiedad


Ver Perfil WWW
[batch] comparar una variable con varios valores
« en: 21 Diciembre 2010, 16:34 pm »

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.

Código
  1. @echo off
  2. if %var%=1,8,15 (goto :si) else (goto :no)
  3. :si
  4. echo la variable coincide con 1,8 o 15
  5. :no
  6. 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ó.

Código
  1. @echo off
  2. for %%a in ("1","8","15") do (
  3. if %var%=%%a (goto :si) else (goto :no)
  4. )
  5. :si
  6. echo la variable coincide con 1,8 o 15
  7. :no
  8. 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 =)


« Última modificación: 22 Diciembre 2010, 13:49 pm por moikano→@ » En línea

Diego_Schneider

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: [batch] comparar una variable con varios valores
« Respuesta #1 en: 22 Diciembre 2010, 01:56 am »

Buenas.

El problema es simple, no podes comparar con varias al mismo tiempo.

Mira este
Código:
@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  ;)


En línea

moikano→@


Desconectado Desconectado

Mensajes: 572


Cultiva tu mente y cuerpo, son tu única propiedad


Ver Perfil WWW
Re: [batch] comparar una variable con varios valores
« Respuesta #2 en: 22 Diciembre 2010, 02:40 am »

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 =)
En línea

flony


Desconectado Desconectado

Mensajes: 565



Ver Perfil
Re: [batch] comparar una variable con varios valores
« Respuesta #3 en: 22 Diciembre 2010, 04:42 am »

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
En línea

si un problema no tiene solucion entonces no es un problema...es algo inevitable
moikano→@


Desconectado Desconectado

Mensajes: 572


Cultiva tu mente y cuerpo, son tu única propiedad


Ver Perfil WWW
Re: [batch] comparar una variable con varios valores
« Respuesta #4 en: 22 Diciembre 2010, 11:52 am »

Citar
pseudocódigo que simule un vector aplicando polimetría
Si supiera lo que me estas diciendo =D

Citar
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.

Pues eso =)
En línea

xassiz~


Desconectado Desconectado

Mensajes: 457



Ver Perfil WWW
Re: [batch] comparar una variable con varios valores
« Respuesta #5 en: 22 Diciembre 2010, 13:25 pm »

Modificando un poco tu código :rolleyes:
Código
  1. for %%a in ("1","8","15") do (
  2.    if %var%=%%~a (echo:Coincide) else (echo:No coincide)
  3. )
En línea

moikano→@


Desconectado Desconectado

Mensajes: 572


Cultiva tu mente y cuerpo, son tu única propiedad


Ver Perfil WWW
Re: [batch] comparar una variable con varios valores
« Respuesta #6 en: 22 Diciembre 2010, 13:48 pm »

Código:
if %var%=%%~a
Solo era ponerle el?! →~←

Vaya pues gracias. Voy a probarlo.

« Última modificación: 22 Diciembre 2010, 13:50 pm por moikano→@ » En línea

xassiz~


Desconectado Desconectado

Mensajes: 457



Ver Perfil WWW
Re: [batch] comparar una variable con varios valores
« Respuesta #7 en: 22 Diciembre 2010, 13:51 pm »

No, lo que pasa es que tu tenías puesto esto:
Código
  1. if %var%=1,8,15
  2.  

Además, el símbolo de comparación es "=="
« Última modificación: 22 Diciembre 2010, 14:06 pm por pablomi » En línea

moikano→@


Desconectado Desconectado

Mensajes: 572


Cultiva tu mente y cuerpo, son tu única propiedad


Ver Perfil WWW
Re: [batch] comparar una variable con varios valores
« Respuesta #8 en: 22 Diciembre 2010, 14:03 pm »

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:

Código
  1. @echo off
  2. for %%a in ("1","8","22") do (
  3.    set dat=%date:~0,2%
  4.    if dat==%%~a (echo Coincide && pause > nul ) else (echo No coincide && pause > nul)
  5. )

Bueno pues hoy estamos a día 22 y el code me saca que "no coincide" con los tres valores.
En línea

xassiz~


Desconectado Desconectado

Mensajes: 457



Ver Perfil WWW
Re: [batch] comparar una variable con varios valores
« Respuesta #9 en: 22 Diciembre 2010, 14:06 pm »

%dat%, no dat

Código
  1. for %%a in ("1","8","22") do (
  2.    set dat=%date:~0,2%
  3.    if %dat%==%%~a (echo Coincide %%a) else (echo No coincide %%a)
  4. )
« Última modificación: 22 Diciembre 2010, 14:09 pm por pablomi » En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines