(Batch) Verificador RUT [CODIGO HECHO]

the_patox

Usuario Nuevo nvl. 1
31 May 2010
636
1
17
123
Valparaíso
Un programa simple para calcular el ultimo digito del rut.

Código:
@echo off
color a
title Verificador RUT                         Th3_p4t0x
:rv
cls
echo.
echo Si el rut tiene 7 digitos sin verificador, agregue un espacio al principio.
echo.

::Se define la variable "rut" que sufrira cambios en todo el proceso.
set/p "rut=Ingrese el rut: "

::Cuando no se escribe nada el programa no se cierra.
if not defined rut goto rv

::Se toma el rut de derecha a izquierda.
set "ocho=%rut:~7%"
set "siete=%rut:~6,-1%"
set "seis=%rut:~5,-2%"
set "cinco=%rut:~4,-3%"
set "cuatro=%rut:~3,-4%"
set "tres=%rut:~2,-5%"
set "dos=%rut:~1,-6%"
set "uno=%rut:~0,1%"

::Se multiplica cada digito por los numeros que componen la serie numerica 2,3,4,5,6,7.
set/a ocho=ocho*2
set/a siete=siete*3
set/a seis=seis*4
set/a cinco=cinco*5
set/a cuatro=cuatro*6
set/a tres=tres*7
set/a dos=dos*2
set/a uno=uno*3

::Se suma el resultado de los anteriores.
set/a af=%ocho%+%siete%+%seis%+%cinco%+%cuatro%+%tres%+%dos%+%uno%

::Se aplica el modulo 11:

::Se divide por 11
set/a div=%af%/11

::Y se determina el resto
set/a res=%af%%%11

::A 11 se le resta el resto.
set/a valid=11-%res%

::Si el resultado es 11 el verificador sera 0.
if %valid%==11 set "valid=0"

::Si el resultado es 10 el verificador sera K.
if %valid%==10 set "valid=K"

::Rut completo.
echo.
echo Su rut completo es %rut%-%valid%
echo.
pause
goto rv

Todo segun Wikipedia.
Cualquier pregunta se hace por aqui :zippy1:

Saludos
 
Última edición:
Vale esta bueno.
pero te recomiendo que al código le pongas comentarios... para los que no saben que hace. PAra que tu post tome mas fuerza y base aun.
 
Vale esta bueno.
pero te recomiendo que al código le pongas comentarios... para los que no saben que hace. PAra que tu post tome mas fuerza y base aun.

Gracias por tu comentario, lo tomare en cuenta.

mejor borras el goto rv y pones exit mejor

Es por si se revisan varios, para no estar abriendo el programa a cada rato,
gracias por el comentario
 
todavia no tengo los conocimientos necesarios como para hacerlo en c#,
pero este codigo puedes usarlo como ayuda para uno en C# y en cualquier otro,
algo asi como diagrama de flujo, para saber como se comporta el programa
 
bueeena, si funciona. Ideal para verificar varios. Lo bueno seria uno que leyera una lista de rut sin verificador y los dejara listitos....(pa no wear tanto escribiendo cada rut..jijii)..pero igual selente..gracias
 
yo le agregaría un IF para cerrarlo al ingresar un 0, cuando ande con mas tiempo te pongo la linea para que tampoco permita el ingreso de letras.

abajo la solucion con la opcion de SALIR


@echo off
title Verificador RUT
:rv
cls
echo.
echo Si el rut tiene 7 digitos sin verificador, agregue un espacio al principio.
echo Si desea cerrar la ventana ingrese 0.
echo.


::Se define la variable "rut" que sufrira cambios en todo el proceso.
set/p "rut=Ingrese el rut: "


::Cuando no se escribe nada el programa no se cierra.
if not defined rut goto rv
if %rut% == 0 goto salir


::Se toma el rut de derecha a izquierda.
set "ocho=%rut:~7%"
set "siete=%rut:~6,-1%"
set "seis=%rut:~5,-2%"
set "cinco=%rut:~4,-3%"
set "cuatro=%rut:~3,-4%"
set "tres=%rut:~2,-5%"
set "dos=%rut:~1,-6%"
set "uno=%rut:~0,1%"


::Se multiplica cada digito por los numeros que componen la serie numerica 2,3,4,5,6,7.
set/a ocho=ocho*2
set/a siete=siete*3
set/a seis=seis*4
set/a cinco=cinco*5
set/a cuatro=cuatro*6
set/a tres=tres*7
set/a dos=dos*2
set/a uno=uno*3


::Se suma el resultado de los anteriores.
set/a af=%ocho%+%siete%+%seis%+%cinco%+%cuatro%+%tres%+%dos%+%uno%


::Se aplica el modulo 11:


::Se divide por 11
set/a div=%af%/11


::Y se determina el resto
set/a res=%af%%%11


::A 11 se le resta el resto.
set/a valid=11-%res%


::Si el resultado es 11 el verificador sera 0.
if %valid%==11 set "valid=0"


::Si el resultado es 10 el verificador sera K.
if %valid%==10 set "valid=K"


::Rut completo.
echo.
echo Su rut completo es %rut%-%valid%
echo.
pause
goto rv


:salir
cls
exit
 
Última edición: