[Consulta] Archivo Bat para calcular edad

Problemas de software/hardware sobre PC's/soluciones cloud. Recomendaciones, soluciones, consultas, aportes en general.
Responder
Avatar de Usuario
mindfreak
xTreme Argimmer
xTreme Argimmer
Mensajes: 2379
Registrado: Mar Feb 17, 2009 5:47 pm
Agradecido: 0
Agradecimiento recibido: 4 veces

[Consulta] Archivo Bat para calcular edad

Mensaje por mindfreak »

Necesito una mano para editar este bat que encontre el internet para calculad la edad. Quiciera que quede lo mas sencilo posible y muestre los años, meses y dias de resultado.
En internet encontre muchas paginas que lo hacen online, incluso apk que hasta tu signo del sodiaco te dan de resultado pero quiciera tenerlo en bat.

Por cierto si a alguien le hace falta tambien encontre un bat y varios archivos excel para calcular el cuil.

____________________________________________________________________________________

Archivo BAT que pide la fecha de nacimiento de una persona, y la compara con la fecha actual y te dice si es mayor de edad:

El pseudocodigo para hacer este programa BAT sería el siguiente:

preguntar la fecha de nacimiento
restar a la fecha actual la fecha de nacimiento para calcular la edad
si la resta del año es mayor de 18 eres mayor de edad
sino
  si la resta del año es menor de 18 eres menor de edad
  sino  ( la resta del año es igual a 18 hay que mirar el mes )
     si la resta del mes es mayor que 0 entonces eres mayor de edad
     sino
         si la resta del mes es menor que 0 entonces eres menor de edad
         sino
             si la resta del dia es igual o mayor que 0 eres mayor de edad
             sino eres menor de edad

Basandonos en el pseudocódigo anterior, el archivo BAT quedaría así:

cls
@echo off
setlocal enabledelayedexpansion

set /p fechanac=Escribe tu fecha de nacimiento:
set fechaactual=%date%

set dian=%fechanac:~0,2%
set diah=%fechaactual:~0,2%

REM Hago la siguiente comprobacion para quitar el primer 0 del dia.
REM Sino lo quito, al hacer la resta me puede dar error, porque
REM interpretaria esos numeros como octales. Hacer la prueba a
REM restar los valores 09 y 03, y veras que sale un error

if %dian:~0,1% equ 0 (
   set dian=%dian:~1,1%
)

REM Hago la misma comprobacion que antes
if %diah:~0,1% equ 0 (
   set diah=%diah:~1,1%
)


set mesn=%fechanac:~3,2%
set mesh=%fechaactual:~3,2%

REM Hago la misma comprobacion que para las variables dian y diah
if %mesn:~0,1% equ 0 (
   set mesn=%mesn:~1,1%
)
REM Hago la misma comprobacion que para las variables dian y diah
if %mesh:~0,1% equ 0 (
   set mesh=%mesh:~1,1%
)

set anion=%fechanac:~6,4%
set anioh=%fechaactual:~6,4%

echo %anion%     %anioh%    %mesn%     %mesh%

set /a restaanio=%anioh% - %anion%

set /a restames=%mesh% - %mesn%

set /a restadia=%diah% - %dian%



if %restaanio% gtr 18 (
     echo Eres mayor de Edad porque la resta de los anios es mayor de 18
) else (
     if %restaanio% lss 18 (
          echo Eres menor de Edad porque la resta de los anios es menor de 18
     ) else (
          if %restames% gtr 0 (
              echo Eres mayor de edad porque la resta del mes es mayor de 0
          ) else (
              if %restames% lss 0 (
                  echo Eres menor de edad porque la resta del mes es menor de 0
              ) else (
                  if %restadia% geq 0 (
                        echo Eres mayor de edad porque la resta del dia es mayor o igual que 0
                  ) else (
                        echo Eres menor de edad porque la resta del dia es menor que 0
                  )
              )
          )
     )
)

echo Tienes %restaanio% anios, %restames% meses y %restadia% dias


____________________________________________________________________________________
Responder