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?
			
			
			
				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 :P
			
			
			
				Cita de: $Edu$ en 23 Diciembre 2012, 22:21 PM
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 :P
Gracias, pero sale esto:
CitarNúmero no válido. Los números están limitados a 32 bits de precisión.
			 
			
			
				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
			
			
			
				Ok, creo que vbs no tiene ese problema.
Gracias $Edu$
			
			
			
				Te voy a mostrar la diferencia.
Limite Batch:
if -999999999 LSS 10 (
	Echo Es menor que 10
)
* 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.
			
			
			
				Muchas gracias EleKtro H@cker.
			
			
			
				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 ;)
			
			
			
				Cita de: Binary_Death en 24 Diciembre 2012, 19:18 PM
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 ;)
:o  :o Wow, Gracias 
Binary_Death, la subrutina  esta algo complicada, la analizare con cuidado.
			
 
			
			
				Cualquier duda me dices  :)