Filtro de variable numérica

Iniciado por q0ok, 29 Mayo 2011, 02:37 AM

0 Miembros y 1 Visitante están viendo este tema.

q0ok

Mi objetivo es comprobar que la variable 'variable' sólo contenga números.


::Filtro de variable numérica by q0ok
setlocal enabledelayedexpansion
:inicio
set /p "variable=Introduzca su variable: "
if not defined variable (goto:inicio)
::Hallamos la longitud de la cadena de carácteres.
set /a cont=0 & set /a sum=0
call :longitud
echo %sum%
::Comprobamos los carácteres de la variable.
:verify
for %%_ in (0 1 2 3 4 5 6 7 8 9) do (
if "!variable:~%cont%,1!" NEQ %%_ (echo WRONG) else (echo RIGHT)
)
pause>nul
set /a cont+=1
if %cont%==%sum% (
echo fin
pause>nul
exit
) else (
goto:verify
)
:longitud
set "fun=!variable:~%sum%,1!"
if not defined fun (goto:eof)
set /a sum+=1
goto longitud


El problema llega dentro del for en "!variable:~%cont%,1!"... No me aparece el carácter como debería aparecer.

¿Alguna ayudita?

¡Gracias!

SuperDraco

No encuentro el fallo en tu código, pero te dejo otra manera de hacer lo mismo, por si te sirve:


Código (dos) [Seleccionar]
@echo off

set /p "variable=Introduzca su variable: "
if not defined variable (goto:inicio)

call :getLength %variable%
echo %length%
pause>nul



:verify
echo %variable% |findstr "a b c d e f g h i j k l m n ¤ o p q r s t u v w x y z , + - _ ¬ ' = ? ¿ ( ) $ # @ º ª" >nul
If %ERRORLEVEL% EQU 0 (echo WRONG) ELSE (echo RIGHT)


pause>nul
echo fin
pause>nul
exit



:Longitud
:getLength
set /a length+=0
set str=%*
:getLength_2
set "str=%str:~1%" && set /a length+=1
if defined str (goto :getLength_2) || (goto :eof)
No he vuelto, solo estoy de paso.

q0ok

#2
Gracias pitoloko por tu respuesta. Sí funciona pero me gustaría que si alguien lograse encontrar el error por el que no funciona el código que postee.