Batch-Skript mit E-Mail Funktion ergänzen
Hallo,
ich habe mir mit Batch-Schnipseln das folgende Batch-Skript "zusammengebastelt". Das Skript erzeugt einen Ordner (Name +Tagesdatum) für die Datensicherung mit nachfolgender Löschung des vor 3 Tagen erzeugten Sicherungsordners.
Das Skript möchte ich nun gerne dahingehend ergänzen, dass mit der Ausführung abschließend eine Mail mit folgenden Angaben im Nachrichtentext (vorzugsweise) oder in einem angehängten LogFile an mich gesendet wird:
Mail-Betreff: Sicherungsdatum: yyyy:mm:dd
------------------------------------------------------------------
Mailtext (oder LogFile) : Sicherungsdatum: yyyy:mm:dd
Erstellter Ordner: „C:\Ablage ……..“
Anzahl der kopierten Dateien (alle Ordner !):
Gelöschter Ordner: „C:\Ablage……..“
(oder: Der zu löschende Ordner „C:\ Ablage……“ konnte nicht gefunden werden)
Leider taugen meine eher bescheidenen Kenntnisse zur Thematik nicht dieses Problem alleine zu lösen. Und nach stundenlangem ergebnislosem „Trial and Error“ würde ich mich sehr über entsprechende Hilfestellungen von euch freuen.
Gruß R. H.
ich habe mir mit Batch-Schnipseln das folgende Batch-Skript "zusammengebastelt". Das Skript erzeugt einen Ordner (Name +Tagesdatum) für die Datensicherung mit nachfolgender Löschung des vor 3 Tagen erzeugten Sicherungsordners.
@echo off
:: Tunderbird beenden
set "programmName=Thunderbird.exe"
taskkill /IM %programmName% /F
setlocal enabledelayedexpansion
:: Aktuelles Datum im Format JJJJ-MM-TT basierend auf den regionalen Einstellungen
set "datum=%date:~6,4%-%date:~3,2%-%date:~0,2%"
:: HauptOrdner mit heutigem Datum erstellen
set "HauptOrdner=C:\Ablage\# Ablage Thunderbird\Backup %datum%"
if not exist "%HauptOrdner%" mkdir "%HauptOrdner%"
:: ZielOrdner erstellen
set "ZielOrdner=C:\Ablage\# Ablage Thunderbird\Backup %datum%\Thunderbird"
if not exist "%ZielOrdner%" mkdir "%ZielOrdner%"
:: Quellverzeichnis angeben
set "QuellVerzeichnis=C:\Users\MasterBlaster\AppData\Roaming\Thunderbird"
:: Dateien kopieren
xcopy "%QuellVerzeichnis%\*" "%ZielOrdner%\" /E /I /H /Y
:: Lösche Version von vor 3 Tagen
:: Pfad zum übergeordneten Verzeichnis, in dem sich die Ordner befinden
set "BasisPfad=C:\Ablage\# Ablage Thunderbird"
:: Datum vor 3 Tagen berechnen (im Format TT-MM-JJJJ)
for /f %%A in ('powershell -NoProfile -Command "(Get-Date).AddDays(-3).ToString('yyyy-MM-dd')"') do set "ZielDatum=%%A"
:: Ordnerpfad, der gelöscht werden soll
set "LoeschOrdner=%BasisPfad%\Backup %ZielDatum%"
:: Überprüfen, ob der Ordner existiert, und dann löschen
if exist "%LoeschOrdner%" (
rmdir /s /q "%LoeschOrdner%"
echo Der Ordner "%LoeschOrdner%" wurde geloescht.
) else (
echo Der Ordner "%LoeschOrdner%" wurde nicht gefunden.
)
pause
Das Skript möchte ich nun gerne dahingehend ergänzen, dass mit der Ausführung abschließend eine Mail mit folgenden Angaben im Nachrichtentext (vorzugsweise) oder in einem angehängten LogFile an mich gesendet wird:
Mail-Betreff: Sicherungsdatum: yyyy:mm:dd
------------------------------------------------------------------
Mailtext (oder LogFile) : Sicherungsdatum: yyyy:mm:dd
Erstellter Ordner: „C:\Ablage ……..“
Anzahl der kopierten Dateien (alle Ordner !):
Gelöschter Ordner: „C:\Ablage……..“
(oder: Der zu löschende Ordner „C:\ Ablage……“ konnte nicht gefunden werden)
Leider taugen meine eher bescheidenen Kenntnisse zur Thematik nicht dieses Problem alleine zu lösen. Und nach stundenlangem ergebnislosem „Trial and Error“ würde ich mich sehr über entsprechende Hilfestellungen von euch freuen.
Gruß R. H.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 672477
Url: https://administrator.de/forum/batch-skript-mit-e-mail-funktion-ergaenzen-672477.html
Ausgedruckt am: 15.04.2025 um 19:04 Uhr
10 Kommentare
Neuester Kommentar
Moin,
Passwort liegt dann aber im Klartext vor. Davon muss man abraten.
learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/send-mailmessage?view=powershell-7.5
Gruß
@echo off
set "to=empfänger@example.com"
set "subject=Testmail"
set "body=Hallo! Dies ist eine Testmail über Batch."
set "smtpServer=smtp.example.com"
set "from=deine@email.de"
set "username=deinbenutzername"
set "password=deinpasswort"
powershell -Command ^
Send-MailMessage -From '%from%' -To '%to%' -Subject '%subject%' -Body '%body%' -SmtpServer '%smtpServer%' -Credential (New-Object System.Management.Automation.PSCredential('%username%', (ConvertTo-SecureString '%password%' -AsPlainText -Force))) -UseSsl
Passwort liegt dann aber im Klartext vor. Davon muss man abraten.
learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/send-mailmessage?view=powershell-7.5
The Send-MailMessage cmdlet is obsolete. This cmdlet doesn't guarantee secure connections to SMTP servers. While there is no immediate replacement available in PowerShell, we recommend you do not use Send-MailMessage
Gruß
Moin,
ansonsten für die Kommandozeile: CMail. Sofern Du über Oauth sendest, ist auch das Passwort-Problem gelöst, das ansonsten halt immer bleibt.
CMail kann eine simple Passwortverschlüsselung durchführen, wobei das Passwort dann an den Windowshost gebunden werden kann. Nicht perfekt, besser als nichts:
Password encryption
This option is available in CMail 0.8.0 or later.
Running CMail with the -encryptpass option will generate an encrypted password which can be used in place of the plain text password in the -host setting. The password is protected using a static key by default, and can be bound to a specific Windows install using the -bindpass option. Encrypted passwords provide protection against casual observation only.
Gruß
DivideByZero
P.S.: Nur so als Anregung: Du solltest Dein Backup-Konzept überdenken. Sichern auf dasselbe Laufwerk ist ebenso wenig sinnvoll, wie ein Überschreiben schon nach 3 Tagen. Wenn Du Dir etwas auf dem PC einfängst, ist direkt alles weg, und wenn Du dich gegen versehentliches Löschen absichern willst: da helfen 3 Tage in die Vergangenheit meist nicht, weil man es später bemerkt. Daher, statt selbst zu bauen, schau z.B. mal bei Duplicati vorbei, oder Veeam Agent für Windows etc.
ansonsten für die Kommandozeile: CMail. Sofern Du über Oauth sendest, ist auch das Passwort-Problem gelöst, das ansonsten halt immer bleibt.
CMail kann eine simple Passwortverschlüsselung durchführen, wobei das Passwort dann an den Windowshost gebunden werden kann. Nicht perfekt, besser als nichts:
Password encryption
This option is available in CMail 0.8.0 or later.
Running CMail with the -encryptpass option will generate an encrypted password which can be used in place of the plain text password in the -host setting. The password is protected using a static key by default, and can be bound to a specific Windows install using the -bindpass option. Encrypted passwords provide protection against casual observation only.
Gruß
DivideByZero
P.S.: Nur so als Anregung: Du solltest Dein Backup-Konzept überdenken. Sichern auf dasselbe Laufwerk ist ebenso wenig sinnvoll, wie ein Überschreiben schon nach 3 Tagen. Wenn Du Dir etwas auf dem PC einfängst, ist direkt alles weg, und wenn Du dich gegen versehentliches Löschen absichern willst: da helfen 3 Tage in die Vergangenheit meist nicht, weil man es später bemerkt. Daher, statt selbst zu bauen, schau z.B. mal bei Duplicati vorbei, oder Veeam Agent für Windows etc.
Zitat von @RH-1958:
Danke für den Hinweis. Die Suche nach einer "geblacklisteten IP" übersteigt aber eindeutig meine Fähigkeiten...
Gruß R. H.
https://mxtoolbox.com/SuperTool.aspx?action=blacklist%3a80.187.112.240&a ...Danke für den Hinweis. Die Suche nach einer "geblacklisteten IP" übersteigt aber eindeutig meine Fähigkeiten...
Gruß R. H.
Deine IP steht in 3 Blacklists ...
Der Hauptgrund für die Meldung ist aber auch, das @mirdochegal im Code die Portangabe vergessen hat ....auf dem Default Port 25 wird dir keiner der Mailserver mit einer dynamischen IP Mails einliefern lassen.
Also als erstes mal den Router ne neue IP ziehen lassen und auf den STARTSSL Port switchen mittels Parameter -Port 587, ... Providerangaben nachschlagen wenn Port 587 nicht belegt ist.
Und zur Info, Send-Mailmessage kann ausschließlich STARTTLS, kein Plain SSL auf Port 465.