Autor
|
Tema: [BATCH]Problema con IF LSS (Leído 5,115 veces)
|
Segadorfelix
Desconectado
Mensajes: 157
|
Hola a todos. Cuando ejecuto lo siguiente: if -2233333333 LSS 10 echo menor que diez debería salir "menor que diez", pero no lo ve como menor, ¿por que pasa esto y como arreglarlo?
|
|
« Última modificación: 24 Diciembre 2012, 06:40 am por EleKtro H@cker »
|
En línea
|
|
|
|
$Edu$
Desconectado
Mensajes: 1.842
|
Intenta poner ese numero negativo en una variable: set /a var=-223333333 y luego si haces if %var% LSS 10 (echo menor que diez) Me dices, tendria que funcionar
|
|
|
En línea
|
|
|
|
Segadorfelix
Desconectado
Mensajes: 157
|
Intenta poner ese numero negativo en una variable: set /a var=-223333333 y luego si haces if %var% LSS 10 (echo menor que diez) Me dices, tendria que funcionar Gracias, pero sale esto: Número no válido. Los números están limitados a 32 bits de precisión.
|
|
|
En línea
|
|
|
|
$Edu$
Desconectado
Mensajes: 1.842
|
Cierto, porque batch tiene un limite, pero puedes capturar el numero que quieras en varias partes y hacer algo para que te funcione de todas formas, pero bueno, yo eligiria otro lenguaje para programar xD
|
|
|
En línea
|
|
|
|
Segadorfelix
Desconectado
Mensajes: 157
|
Ok, creo que vbs no tiene ese problema. Gracias $Edu$
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.870
|
Te voy a mostrar la diferencia. Limite Batch: )
* 9 dígitos
Límite VBS: if -99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 < 10 then Wscript.Echo "Menor que 10" End If
* 308 dígitos
Límite Ruby: If -999...(Así hasta más de UN MILLÓN DE DIGITOS) < 10 print "Es menor de 10" end
PD: Ruby no tiene límite alguno porque convierte los enteros.
Límite python: * Lo mismo que Ruby. Saludos.
|
|
|
En línea
|
|
|
|
Segadorfelix
Desconectado
Mensajes: 157
|
Muchas gracias EleKtro H@cker.
|
|
|
En línea
|
|
|
|
Binary_Death
Desconectado
Mensajes: 214
|
Una vez me tuve que enfrentar a ese problema. Me jodió bastante, sí. Resulta que hice una función un poco engorrosa que te puede servir: :_hst setlocal enabledelayedexpansion call :_strlen "%~1" & set/a n[0]=!errorlevel! call :_strlen "%~2" & set/a n[1]=!errorlevel! if %n[0]% EQU %n[1]% set "s_0=%~1" & set "s_1=%~2" & goto :_endhst set/a hst=0,nhst=1 if %n[1]% GTR !n[%hst%]! set/a hst=1,nhst=0 set/a l_0=!n[%hst%]!-!n[%nhst%]! shift/0 & call set s_0=%%~%hst% & call set s_1=%%~%nhst% for /l %%_ in (1,1,%l_0%) do call set "s_1=0!s_1!" :_endhst for /f %%_ in ('"(echo:%s_0%&echo:%s_1%)|sort"') do set "hst=%%_" endlocal & set "hst=%hst: =%" & exit /b :_strlen setlocal set/a cnt=0 for /f "tokens=* eol=" %%_ in ( '"cmd /u /c echo:%~1|more"' ) do set/a cnt+=1 endlocal & exit /b %cnt%
Como puedes ver, recibe dos parámetros (los dos números) y devuelve en la variable "hst" el mayor. Suerte, y tómatelo con calma, que ya te digo que es un poco engorrosa pero por lo menos funciona con los dígitos que sea necesario
|
|
|
En línea
|
|
|
|
Segadorfelix
Desconectado
Mensajes: 157
|
Una vez me tuve que enfrentar a ese problema. Me jodió bastante, sí. Resulta que hice una función un poco engorrosa que te puede servir: :_hst setlocal enabledelayedexpansion call :_strlen "%~1" & set/a n[0]=!errorlevel! call :_strlen "%~2" & set/a n[1]=!errorlevel! if %n[0]% EQU %n[1]% set "s_0=%~1" & set "s_1=%~2" & goto :_endhst set/a hst=0,nhst=1 if %n[1]% GTR !n[%hst%]! set/a hst=1,nhst=0 set/a l_0=!n[%hst%]!-!n[%nhst%]! shift/0 & call set s_0=%%~%hst% & call set s_1=%%~%nhst% for /l %%_ in (1,1,%l_0%) do call set "s_1=0!s_1!" :_endhst for /f %%_ in ('"(echo:%s_0%&echo:%s_1%)|sort"') do set "hst=%%_" endlocal & set "hst=%hst: =%" & exit /b :_strlen setlocal set/a cnt=0 for /f "tokens=* eol=" %%_ in ( '"cmd /u /c echo:%~1|more"' ) do set/a cnt+=1 endlocal & exit /b %cnt%
Como puedes ver, recibe dos parámetros (los dos números) y devuelve en la variable "hst" el mayor. Suerte, y tómatelo con calma, que ya te digo que es un poco engorrosa pero por lo menos funciona con los dígitos que sea necesario Wow, Gracias Binary_Death, la subrutina esta algo complicada, la analizare con cuidado.
|
|
|
En línea
|
|
|
|
Binary_Death
Desconectado
Mensajes: 214
|
Cualquier duda me dices
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
problema con batch
Scripting
|
0xDani
|
2
|
2,475
|
21 Abril 2012, 00:34 am
por Eleкtro
|
|
|
[Batch] Insertar un batch dentro de un batch que fabrique un .txt
Scripting
|
$pedrojo2704
|
2
|
6,268
|
23 Agosto 2012, 10:08 am
por $pedrojo2704
|
|
|
Problema batch
Scripting
|
viperx666
|
4
|
2,814
|
11 Marzo 2013, 12:00 pm
por Eleкtro
|
|
|
Problema con un For en batch
Scripting
|
santi810
|
4
|
3,322
|
20 Noviembre 2013, 13:55 pm
por Eleкtro
|
|
|
[Batch] Problema con un IF
Scripting
|
castelar
|
2
|
2,024
|
16 Mayo 2015, 12:27 pm
por castelar
|
|