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

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Intercambiar valores de dos variables (batch) --ayuda--
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Intercambiar valores de dos variables (batch) --ayuda--  (Leído 3,551 veces)
juntacadaveres

Desconectado Desconectado

Mensajes: 76



Ver Perfil
Intercambiar valores de dos variables (batch) --ayuda--
« en: 21 Abril 2019, 11:49 am »

No sé qué hago mal....
llevo ya un par de horas intentado resolver este problema
el batch me pedirá dos números pero el primero debe ser menor que el segundo
por eso hago un intercambio de variables
ejemplo
dame un numero: 10
dame otro numero: 7
num1=10
num2=7

intecambio
num1=7
num2=10

he hecho esto pero no sé por qué demonios no me funciona
ayuda por favor

Código
  1. REM PERMUTAS LAS VARIBLES NUM. SI EL PRIMER NUMERO ES MAYOR CAMBIARLO A LA VARIABLE NUM2
  2. IF "%NUM1%" GTR "%NUM2%" (
  3.    SET VARTEMP=%NUM1%
  4.    SET NUM1=%NUM2%
  5.    SET NUM2=%VARTEMP%
  6. )
  7.    ECHO NUM1=%NUM1% VARTEMP=%VARTEMP% NUM2=%NUM2%
  8.  
  9.  
  10. PAUSE>NUL


Citar
==================================
Creacion de usuarios automatizado
==================================

Nombre de usuario > LUIS
Primer Numero > 7
Segundo Numero > 5
NUM1=5 VARTEMP=7 NUM2=


Aqui el script completo

Código
  1. @echo off
  2. REM EJERCICIO 10
  3. REM COMPROBAR SI EL QUE ABRE ESTE ARCHIVO ES ADMINISTRADOR O UN USUARIO SIN PERMISOS
  4. NET SESSION >NUL 2>NUL
  5.    GOTO :INICIO
  6. )
  7.    ECHO NO TIENES PERMISOS PARA USAR ESTE ARCHIVO && PAUSE>NUL && EXIT
  8. )
  9. REM EMPEZAMOS
  10. :inicio
  11. SET NUM1=
  12. SET NUM2=
  13. SET NOMBRE=
  14. CLS
  15. echo ==================================
  16. echo Creacion de usuarios automatizado
  17. echo ==================================
  18. set /p nombre="Nombre de usuario > "
  19. IF "%NOMBRE%"=="" (
  20.    ECHO DEBES EMPEZAR CON UNA CADENA DE TEXTO && PAUSE>NUL
  21.    GOTO INICIO
  22. )
  23. REM PEDIR PRIMER NUMERO
  24. :NUM1
  25. set /p num1="Primer Numero > "
  26. IF "%NUM1%"=="" (
  27.    ECHO DEBES DARME UN NUMERO && PAUSE>NUL && GOTO :NUM1
  28. )
  29. set /a var=%num1%
  30. IF NOT "%VAR%"=="%NUM1%" (
  31.    ECHO DEBES DARME UN NUMERO && PAUSE>NUL && GOTO :NUM1
  32. )
  33. :NUM2
  34. REM PEDIR SEGUNDO NUMERO
  35. SET /P NUM2="Segundo Numero > "
  36. IF "%NUM2%"=="" (
  37.    ECHO DEBES DARME UN SEGUNDO NUMERO && PAUSE>NUL && GOTO :NUM2
  38. )
  39. set /a var2=%num2%
  40. IF NOT "%VAR2%"=="%NUM2%" (
  41.    ECHO DEBES DARME UN NUMERO && PAUSE>NUL && GOTO :NUM2
  42. )
  43. REM PERMUTAS LAS VARIBLES NUM. SI EL PRIMER NUMERO ES MAYOR CAMBIARLO A LA VARIABLE NUM2
  44. IF "%NUM1%" GTR "%NUM2%" (
  45.    SET VARTEMP=%NUM1%
  46.    SET NUM1=%NUM2%
  47.    SET NUM2=%VARTEMP%
  48. )
  49.    ECHO NUM1=%NUM1% VARTEMP=%VARTEMP% NUM2=%NUM2%
  50.  
  51.  
  52. PAUSE>NUL
  53.  


« Última modificación: 21 Abril 2019, 11:51 am por juntacadaveres » En línea

juntacadaveres

Desconectado Desconectado

Mensajes: 76



Ver Perfil
Re: Intercambiar valores de dos variables (batch) --ayuda--
« Respuesta #1 en: 21 Abril 2019, 12:10 pm »

Hola ya me respondo yo mismo otra vez
no hacía falta utilizar otra variable para intercambiar las dos primeras
bastaba con hacer esto

Código
  1. REM PERMUTAS LAS VARIBLES NUM. SI EL PRIMER NUMERO ES MAYOR CAMBIARLO A LA VARIABLE NUM2
  2. IF "%NUM1%" GTR "%NUM2%" (
  3.    SET NUM1=%NUM2%
  4.    SET NUM2=%NUM1%
  5. )

Joder
pero no entiendo por qué funciona el código

si num1=%num2%
y  luego hago
num2=%num1% >>>>>>>>>> pero %num1% era %num2%
entonces num2 = %num2%

no entiendo por qué esto funciona
aunque haga lo que yo quería que hiciese
no debería funcionar...
ayuda

Citar
==================================
Creacion de usuarios automatizado
==================================

Nombre de usuario > LUIS
Primer Numero > 7
Segundo Numero > 5
NOMBRE=LUIS NUM1=7 NUM2=5
INTERCAMBIO DE VARIABLES:
NOMBRE=LUIS NUM1=5 NUM2=7



« Última modificación: 21 Abril 2019, 12:26 pm por juntacadaveres » En línea

juntacadaveres

Desconectado Desconectado

Mensajes: 76



Ver Perfil
Re: Intercambiar valores de dos variables (batch) --ayuda--
« Respuesta #2 en: 21 Abril 2019, 12:38 pm »

Hola
me vuelvo a responder otra vez
la cuestión estaba en los paréntesis
que toma como una sola línea todo lo que hay dentro de él.
saludos
En línea

juntacadaveres

Desconectado Desconectado

Mensajes: 76



Ver Perfil
Re: Intercambiar valores de dos variables (batch) --ayuda--
« Respuesta #3 en: 21 Abril 2019, 13:51 pm »

Hola al parecer todo funcionaba
hasta que meto como primer número un [10-19]
y como segundo numero uno menor a estos





No sé cómo arreglar esto

numero 1: 10
numero 2: 5
se supone que numero 10 es mayor que 5
pero el batch no lo detecta. ayuda por favor.
En línea

juntacadaveres

Desconectado Desconectado

Mensajes: 76



Ver Perfil
Re: Intercambiar valores de dos variables (batch) --ayuda--
« Respuesta #4 en: 21 Abril 2019, 13:59 pm »

Con este script que hice aparte si me funciono

Código
  1. @ECHO OFF
  2. SET NUM1=
  3. SET NUM2=
  4. SET /P NUM1="DAME UN NUMERO> "
  5. SET /P NUM2="DAME OTRO NUMERO> "
  6. IF %NUM1% GTR %NUM2% (
  7.    ECHO EL NUMERO %NUM1% ES MAYOR QUE %NUM2%
  8.    SET NUM1=%NUM2%
  9.    SET NUM2=%NUM1%
  10. )
  11. ECHO NUMERO1= %NUM1%
  12. ECHO NUMERO2= %NUM2%
  13. PAUSE>NUL

Lo que estropeaba el script eran las comillas 
"%NUM1%" GTR "%NUM2%"
alguien me puede decir por qué?
mi profesor siempre usa comillas en las variables...
« Última modificación: 21 Abril 2019, 14:02 pm por juntacadaveres » En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.042



Ver Perfil
Re: Intercambiar valores de dos variables (batch) --ayuda--
« Respuesta #5 en: 21 Abril 2019, 17:50 pm »

Saludos,

- Utilizar comillas implica comparar String (texto), en este caso se ordena de menor a mayor 0-9 A-Z a-z, por esto "a" < "b" y "10" < "5"

- Los operadores de comparación EQU, NEQ, LSS, LEQ, GTR, GEQ son usados para comparar números tal cual y los números no van entre comillas.
En línea

juntacadaveres

Desconectado Desconectado

Mensajes: 76



Ver Perfil
Re: Intercambiar valores de dos variables (batch) --ayuda--
« Respuesta #6 en: 21 Abril 2019, 21:25 pm »

Saludos,

- Utilizar comillas implica comparar String (texto), en este caso se ordena de menor a mayor 0-9 A-Z a-z, por esto "a" < "b" y "10" < "5"

- Los operadores de comparación EQU, NEQ, LSS, LEQ, GTR, GEQ son usados para comparar números tal cual y los números no van entre comillas.


muchas gracias
En línea

Tachikomaia


Desconectado Desconectado

Mensajes: 1.180


Superhacker (es broma xD )


Ver Perfil
Re: Intercambiar valores de dos variables (batch) --ayuda--
« Respuesta #7 en: 24 Abril 2019, 18:08 pm »

Estom... lo más fácil es crear otra variable.
V = Num1
Num1 = Num2
Num2 = V

Quisiera probarlo por las dudas, pero si hay algo mal es cambiar algunas variables por otras o de orden.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Video tutorial Como Intercambiar variables
Programación C/C++
alexdrew 0 1,735 Último mensaje 7 Septiembre 2011, 04:40 am
por alexdrew
AYUDA: Como intercambiar variables entre javascript y php?
Desarrollo Web
nebiros_root 5 4,409 Último mensaje 6 Noviembre 2011, 22:47 pm
por fran800m
¿Es posible intercambiar dos valores sin usar variable auxiliar?
Programación C/C++
DickGumshoe 6 14,379 Último mensaje 14 Noviembre 2011, 15:21 pm
por DickGumshoe
intercambiar valores dentro de un vector
Programación C/C++
bash 8 3,999 Último mensaje 21 Enero 2016, 23:46 pm
por bash
Como intercambiar valores de un iterator en C++ « 1 2 »
Programación C/C++
alpachino98 14 4,330 Último mensaje 22 Enero 2019, 16:02 pm
por dijsktra
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines