Realizar recordatorio de cumpleaños en batch

Quisiera realizar un programa batch donde según la fecha de un cumpleaños muestre un mensaje de felicitación, este debe de verificar que fecha es y si es el indicado mostrar el mensaje.

Por ejm Carlos 12/12/2015

Maria 02/04/2016

Cesar 01/02/2016

1 Respuesta

Respuesta
2

Imagino que tienes un archivo con fechas y nombres. Y que el bat se ejecutará todos los días como tarea programada, si el ordenador está encendido. Lo que no tengo muy claro es si es un recordatorio para ti o si se supone que el bat está instalado en una serie de ordenadores y quieres que el mensaje de felicitación le salga al usuario del ordenador.

Gracias por contestar, soy profesor de computación, y con mis alumnos tocamos los archivos batch ya que les interesa mucho. No se usaría archivos, pondría en unas 5 variables las fechas de cumpleaños de 5 alumnos, tendría que ser como tarea programada para revisar a diario, y si la fecha del día coincide con una de las 5 variables., mostrar un mensaje.

Supongo que las 5 variables contienen tanto la fecha como el nombre. Si es así sería más cómodo poner en primer lugar la fecha y en segundo lugar el nombre.

12/12/2015 Carlos

02/04/2016 Maria

Puedes probar con esto:

@echo off
Setlocal EnableDelayedExpansion
set dat1=28/12/2015 Inocencia
set dat2=01/02/2016 Cesar
set dat3=02/04/2016 Maria
set dat4=09/04/2016 Juana
set dat5=11/12/2015 Juan Carlos
for /l %%a in (1, 1, 5) do (
set fecha=!dat%%a:~0,10!
if "!fecha!" == "%DATE%" echo Felicidades !dat%%a:~11!
)

Una advertencia, el editor de la página a veces separa la primera admiración (!) Del nombre de la variable; si ocurriera eso debes saber que no hay espacios entre las admiraciones y el nombre de la variable "fecha" ni "dat".

Ya me contarás.

Muchas gracias, era lo que quería, ahora por favor, si me podrías detallar que hacen estas instrucciones para explicarles

for /l %%a in (1, 1, 5) do (
set fecha=!dat%%a:~0,10!

El "FOR /L" (da igual mayúsculas que minúsculas pero a mí me gustan más las minúsculas) asigna a la variable interna del FOR, que en este caso he decidido que se llame %%a (si es dentro de un bat las variables internas deben ir precedidas de un doble %), valores empezando con el primero del IN (es decir el 1), en pasos sucesivos del paso indicado en el segundo valor del IN (el segundo 1) hasta alcanzar el valor indicado en el tercero (el 5). El DO representa los comandos que hay que ejecutar para cada valor sucesivo de %%a, deben ir incluidos entre paréntesis y si se quiere usar más de una línea se debe terminar la primera en el paréntesis de apertura. El SET asigna a la variable "fecha" el valor de los 10 primeros caracteres de la variable dat%%a, es decir, sucesivamente dat1, dat2, dat3, dat4 y dat5 según los sucesivos valores de %%a (1, 2, 3, 4 y 5). El carácter "~" indica precisamente esa función (tomar partes de una variable), el "0" la primera posición y el 10 el número de caracteres a partir del indicado. Con esto se cargan en la variable "fecha" sucesivamente las partes de fecha de las variables "dat%%a" para luego compararlas con la fecha de hoy (variable interna DATE).

Espero que te quede claro. Si quieres más información sobre el comando FOR (el más potente, a mi juicio, del MSDOS) puedes buscarlo en la red o, simplemente, teclear "FOR /?" en una ventana MSDOS.


                    

Esta todo claro, muchas gracias por tu tiempo.

Si ya no me necesitas, cierra la pregunta y califica la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas