Geburtstags-Mails an alle Mitarbeiter versenden
Hallo,
wir wollten gerne in der Firma über aktuelle Geburtstage per E-Mail informiert werden.
Da es im Netz m.E. nichts so richtig brauchbares und kostenloses gab, hab ich einen kleinen Batch geschrieben. Dieser versendet am Geburtstag allen Mitarbeitern eine E-Mail als kleine Erinnerung. Zum Versenden wird das kostenlose Programm Blat verwendet (nur 3 Dateien, ohne Installation).
Der Batch sollte über die Aufgabenplanung / geplante Tasks täglich immer nachts nach 0 Uhr ausgeführt werden, so dass die Kollegen die E-Mail morgens im Postfach haben.
Hier der Code zur freien Verwendung für Jeden:
Für Anregungen und Kritik bin ich gerne bereit. Beispielsweise eine zusätzliche E-Mail 3 Tage vor dem Geburtstag zu versenden.
Grüße
Thomas
wir wollten gerne in der Firma über aktuelle Geburtstage per E-Mail informiert werden.
Da es im Netz m.E. nichts so richtig brauchbares und kostenloses gab, hab ich einen kleinen Batch geschrieben. Dieser versendet am Geburtstag allen Mitarbeitern eine E-Mail als kleine Erinnerung. Zum Versenden wird das kostenlose Programm Blat verwendet (nur 3 Dateien, ohne Installation).
Der Batch sollte über die Aufgabenplanung / geplante Tasks täglich immer nachts nach 0 Uhr ausgeführt werden, so dass die Kollegen die E-Mail morgens im Postfach haben.
Hier der Code zur freien Verwendung für Jeden:
:: =================================================================================
:: Versendet Geburtstags-Mails an Mitarbeiter
::
:: Neue Mitarbeiter müssen an 3 (!) Stellen eingefügt werden.
:: =================================================================================
:: (1) Hier Namen und Geburtstag definieren (Format einhalten!)
set Max_Mustermann=02.03.
set Mäxle_Musterfrau=15.05.
:: Variablen für Datum definieren
set Tag=%date:~0,2%
set Monat=%date:~3,2%
set heute=%Tag%.%Monat%.
:: (2) Mitarbeiter in Textdatei schreiben, wenn er Geburtstag hat
if %Max_Mustermann%==%heute% echo Max Mustermann (Vertriebsleiter) hat am %Max_Mustermann% Geburtstag. >> Geburtstage.txt
if %Mäxle_Musterfrau%==%heute% echo Mäxle Musterfrau (Verwaltung) hat am %Max_Musterfrau% Geburtstag. >> Geburtstage.txt
:: Wartezeit
ping localhost
if exist "Geburtstage.txt" goto :Senden
:Ende_ohne_Senden
exit
:Senden (3)
cd /d "C:\Geburtstagsmail\Blat"
Blat -install 192.168.xxx.xxx absender@domain.de
Blat "C:\Geburtstagsmail\Geburtstage.txt" ^
-to empfänger1@domain.de,empfänger2@domain.de ^
-server 192.168.xxx.xxx -u benutzername -pw passwort ^
-debug -timestamp -log "C:\Geburtstagsmail\Logdatei.txt" ^
-subject "Heutige Geburtstage"
:Löschen
del C:\Geburtstagsmail\Geburtstage.txt
:Ende_nach_Senden
exit
Für Anregungen und Kritik bin ich gerne bereit. Beispielsweise eine zusätzliche E-Mail 3 Tage vor dem Geburtstag zu versenden.
Grüße
Thomas
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 202663
Url: https://administrator.de/contentid/202663
Ausgedruckt am: 22.11.2024 um 20:11 Uhr
8 Kommentare
Neuester Kommentar
Hallo Unwissender1!
Da Du als %heute% ja ohnehin Tag und Monat benötigst, kannst Du auch gleich
verwenden.
erstellst, kannst Du die Datei Geburtstage.txt etwa so erzeugen:
Um die zusätzliche E-Mail 3 Tage vor dem Geburtstag versenden zu können, müsste das Datum von "heute in 3 Tagen" ermittelt werden, was in native Batch zwar möglich, aber mühsam (Monats- / Jahreswechsel, Schaltjahr berücksichtigen) ist - einfacher geht's mit einem kleinen VBScript ("Datumsermittlung.vbs") der Art
- lässt sich auch leicht aus dem Batch heraus erzeugen mit
- und dem Aufruf
Der Rest dann wie für %heute% ...
Grüße
bastla
Da Du als %heute% ja ohnehin Tag und Monat benötigst, kannst Du auch gleich
set "heute=%date:~,6%"
Neue Mitarbeiter müssen an 3 (!) Stellen eingefügt werden.
ist nicht sehr elegant - wenn Du als Alternative eine Textdatei "Mitarbeiterliste.txt" nach dem Muster02.03.;Max Mustermann;Vertriebsleiter
15.05.;Mäxle Musterfrau;Verwaltung
for /f "tokens=1-3 delims=;" %%a in ('findstr "%heute%;" "C:\Geburtstagsmail\Mitarbeiterliste.txt"') do >>C:\Geburtstagsmail\Geburtstage.txt echo %%b (%%c) hat am %%a Geburtstag.
WScript.Echo DateAdd("d",3,Date)
>"%temp%\Datumsermittlung.vbs" echo WScript.Echo DateAdd("d",3,Date)
for /f %%i in ('cscript //nologo "%temp%\Datumsermittlung.vbs"') do set "Datum=%%i"
Grüße
bastla
Hallo,
alternativ könnte man sich Gedanken machen ob man das Activ Directory abfragt.
Ich persönlich greife die Lohnbuchhaltung ab da dort die Daten auch schon drinnen sind und schicke sie aber nur der Geschäftsleitung. Man sollte mit den Mitarbeitern auch klären ob ihnen das recht ist. Könnte ja sein das einer seinen Geburtstag nicht verraten will.
alternativ könnte man sich Gedanken machen ob man das Activ Directory abfragt.
Ich persönlich greife die Lohnbuchhaltung ab da dort die Daten auch schon drinnen sind und schicke sie aber nur der Geschäftsleitung. Man sollte mit den Mitarbeitern auch klären ob ihnen das recht ist. Könnte ja sein das einer seinen Geburtstag nicht verraten will.
Hallo,
ich möcht hier nur das Thema Datenschutz ansprechen - vorsicht beim Verteilen von Geburtstagen an alle Mitarbeiter, das kann Ärger geben. Es muss die Zustimmung derer eingeholt werden, deren Geburtstag verteilt wird...
Habe da schon einschlägige Erfahrungen gemacht...
Einfach nur als Info
Liebe Grüße
Sylvia
ich möcht hier nur das Thema Datenschutz ansprechen - vorsicht beim Verteilen von Geburtstagen an alle Mitarbeiter, das kann Ärger geben. Es muss die Zustimmung derer eingeholt werden, deren Geburtstag verteilt wird...
Habe da schon einschlägige Erfahrungen gemacht...
Einfach nur als Info
Liebe Grüße
Sylvia
Hallo Bastla,
Ich habe gerade für eine Aufgabe dieses Skript gefunden und konnte mein Problem damit zu 99% lösen, DANKE für deine tolle Arbeit hier!!
So wie es gepostet ist zeigt dein Skript für heute 11.07.2021 an.
Ich würde gerne das Datum aus diesem Skript OHNE das Jahr haben, also 11.07. so wie es auch aus %heute% kommt.
Geht das?
Damit könnte man aus dem Textfile die Geburtstage für heute und für morgen in die Geburtstagsliste schreiben.....
Was ich auch geil finden würde, wenn man das Jahr in die Textliste DAZUSCHREIBT und dann daraus das Alter berechnet.
z.B. Max Musterfrau (39 Jahre)
Werde mal darüber nachdenken on das überhaupt möglich ist?
Vielleicht hast ja einen Tipp
Ich habe gerade für eine Aufgabe dieses Skript gefunden und konnte mein Problem damit zu 99% lösen, DANKE für deine tolle Arbeit hier!!
Zitat von @bastla:
for /f %%i in ('cscript //nologo "%temp%\Datumsermittlung.vbs"') do set "Datum=%%i"
So wie es gepostet ist zeigt dein Skript für heute 11.07.2021 an.
Ich würde gerne das Datum aus diesem Skript OHNE das Jahr haben, also 11.07. so wie es auch aus %heute% kommt.
Geht das?
Damit könnte man aus dem Textfile die Geburtstage für heute und für morgen in die Geburtstagsliste schreiben.....
Was ich auch geil finden würde, wenn man das Jahr in die Textliste DAZUSCHREIBT und dann daraus das Alter berechnet.
z.B. Max Musterfrau (39 Jahre)
Werde mal darüber nachdenken on das überhaupt möglich ist?
Vielleicht hast ja einen Tipp