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
REM PERMUTAS LAS VARIBLES NUM. SI EL PRIMER NUMERO ES MAYOR CAMBIARLO A LA VARIABLE NUM2
IF "%NUM1%" GTR "%NUM2%" (
SET VARTEMP=%NUM1%
SET NUM1=%NUM2%
SET NUM2=%VARTEMP%
)
ECHO NUM1=%NUM1% VARTEMP=%VARTEMP% NUM2=%NUM2%
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
@echo off
REM EJERCICIO 10
REM COMPROBAR SI EL QUE ABRE ESTE ARCHIVO ES ADMINISTRADOR O UN USUARIO SIN PERMISOS
NET SESSION >NUL 2>NUL
IF NOT ERRORLEVEL 1 (
GOTO :INICIO
)
IF ERRORLEVEL 1 (
ECHO NO TIENES PERMISOS PARA USAR ESTE ARCHIVO && PAUSE>NUL && EXIT
)
REM EMPEZAMOS
:inicio
SET NUM1=
SET NUM2=
SET NOMBRE=
CLS
echo ==================================
echo Creacion de usuarios automatizado
echo ==================================
echo.
set /p nombre="Nombre de usuario > "
IF "%NOMBRE%"=="" (
ECHO DEBES EMPEZAR CON UNA CADENA DE TEXTO && PAUSE>NUL
GOTO INICIO
)
REM PEDIR PRIMER NUMERO
:NUM1
set /p num1="Primer Numero > "
IF "%NUM1%"=="" (
ECHO DEBES DARME UN NUMERO && PAUSE>NUL && GOTO :NUM1
)
set /a var=%num1%
IF NOT "%VAR%"=="%NUM1%" (
ECHO DEBES DARME UN NUMERO && PAUSE>NUL && GOTO :NUM1
)
:NUM2
REM PEDIR SEGUNDO NUMERO
SET /P NUM2="Segundo Numero > "
IF "%NUM2%"=="" (
ECHO DEBES DARME UN SEGUNDO NUMERO && PAUSE>NUL && GOTO :NUM2
)
set /a var2=%num2%
IF NOT "%VAR2%"=="%NUM2%" (
ECHO DEBES DARME UN NUMERO && PAUSE>NUL && GOTO :NUM2
)
REM PERMUTAS LAS VARIBLES NUM. SI EL PRIMER NUMERO ES MAYOR CAMBIARLO A LA VARIABLE NUM2
IF "%NUM1%" GTR "%NUM2%" (
SET VARTEMP=%NUM1%
SET NUM1=%NUM2%
SET NUM2=%VARTEMP%
)
ECHO NUM1=%NUM1% VARTEMP=%VARTEMP% NUM2=%NUM2%
PAUSE>NUL
Hola ya me respondo yo mismo otra vez
no hacía falta utilizar otra variable para intercambiar las dos primeras
bastaba con hacer esto
REM PERMUTAS LAS VARIBLES NUM. SI EL PRIMER NUMERO ES MAYOR CAMBIARLO A LA VARIABLE NUM2
IF "%NUM1%" GTR "%NUM2%" (
SET NUM1=%NUM2%
SET NUM2=%NUM1%
)
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
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
Hola al parecer todo funcionaba
hasta que meto como primer número un [10-19]
y como segundo numero uno menor a estos
(https://i.imgur.com/MFZgKRn.jpg)
(https://i.imgur.com/ND1ugkJ.png)
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.
Con este script que hice aparte si me funciono
@ECHO OFF
SET NUM1=
SET NUM2=
SET /P NUM1="DAME UN NUMERO> "
SET /P NUM2="DAME OTRO NUMERO> "
IF %NUM1% GTR %NUM2% (
ECHO EL NUMERO %NUM1% ES MAYOR QUE %NUM2%
SET NUM1=%NUM2%
SET NUM2=%NUM1%
)
ECHO NUMERO1= %NUM1%
ECHO NUMERO2= %NUM2%
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...
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.
Cita de: EdePC 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.
muchas gracias
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.