[batch] Sacando la letra del DNI

Iniciado por Hekaly, 25 Febrero 2011, 13:57 PM

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

Hekaly

Buenas a todos.

Hoy me aburría un ratito y me he puesto hacer una aplicación sencillita, en este caso un script que te averigua la letra del DNI dándole el número.

Aquí os dejo el código.

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

cd \ & cls
color a
:: Por comtecknet

title Sacar letra de DNI basandose en el numero


setlocal enabledelayedexpansion

:inicio

rem ----------------------------
rem - Declaracion de variables -
rem ----------------------------

set valor=23

rem ---------------------------------------------
rem - Dividiendo el numero introducido entre 23 -
rem ---------------------------------------------


cls
set /p "numero=Introduce el numero de tu DNI (Sin letra): "
set /a "resultado=%numero%%%valor%"

rem ------------------------------------------------------------
rem - Comprobando que letra corresponde por cada resto posible -
rem ------------------------------------------------------------


if !resultado! EQU 0 (set resultado=T & call :resultado)
if !resultado! EQU 1 (set resultado=R & call :resultado)
if !resultado! EQU 2 (set resultado=W & call :resultado)
if !resultado! EQU 3 (set resultado=A & call :resultado)
if !resultado! EQU 4 (set resultado=G & call :resultado)
if !resultado! EQU 5 (set resultado=M & call :resultado)
if !resultado! EQU 6 (set resultado=Y & call :resultado)
if !resultado! EQU 7 (set resultado=F & call :resultado)
if !resultado! EQU 8 (set resultado=P & call :resultado)
if !resultado! EQU 9 (set resultado=D & call :resultado)
if !resultado! EQU 10 (set resultado=X & call :resultado)
if !resultado! EQU 11 (set resultado=B & call :resultado)
if !resultado! EQU 12 (set resultado=N & call :resultado)
if !resultado! EQU 13 (set resultado=J & call :resultado)
if !resultado! EQU 14 (set resultado=Z & call :resultado)
if !resultado! EQU 15 (set resultado=S & call :resultado)
if !resultado! EQU 16 (set resultado=Q & call :resultado)
if !resultado! EQU 17 (set resultado=V & call :resultado)
if !resultado! EQU 18 (set resultado=H & call :resultado)
if !resultado! EQU 19 (set resultado=L & call :resultado)
if !resultado! EQU 20 (set resultado=C & call :resultado)
if !resultado! EQU 21 (set resultado=K & call :resultado)
if !resultado! EQU 22 (set resultado=E & call :resultado)

rem --------------------------------------------------
rem - Mostrando el resultado: Numero y letra del DNI -
rem --------------------------------------------------

:resultado

cls
echo  ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo  º      Resumen        º
echo  ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
echo  ºNumero de DNI:       º  %numero%
echo  º                     º
echo  ºLetra de DNI         º  %resultado%
echo  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
echo.
set /p otro="Quieres ver otro DNI [si/no]: "

if %otro% EQU si (goto inicio)
if %otro% EQU no (exit)


No creo que sea la forma más depurada de hacer este script, es de suponer que a través de un for pueda quitarme de encima todos los if.


Karcrack

#1
Yo lo haria asi:
@echo off
setlocal enabledelayedexpansion
set v=23
set charmap=TRWAGMYFPDXBNJZSQVHLCKE
set /p "DNI=Introduce tu DNI: "
set /a "r=%DNI%%%v%"
echo NIF:%DNI%!charmap:~%r%,1!