Batch Dateien im Verzeichnis mit aktuellem Datum vergleichen u. Email senden

la2k6

Cadet 1st Year
Registriert
Jan. 2017
Beiträge
9
Hoi,


Bin neu hier und habe auch schon versucht, es mit diversen Anleitungen aus dem Netz hinzubekommen...
Leider keinen Erfolg dabei gehabt...

Hier nochmal kurz eine Beschreibung:
Jeden Tag werden automatisch Dateien in ein Verzeichnis kopiert, wobei die älteren überschrieben werden.
Nun soll über diesen Batch geprüft werden, ob dass Datum der Dateien im Ordner von heute ist.
Wenn nicht, dann soll eine Email gesendet werden...

Ich hoffe, dass mich da jemand unterstützen kann...


ps.: vielleicht sehe ich auch einfach den Wald vor lauter Bäumen nícht...man wird sehen...

Danke
lg
la
 
Hi,

zerlege dein Problem mal in einzelne Punkte. Da bleiben für mich folgende übrig:

1. Datum der Dateien in Ordner auslesen
2. Aktuelles Datum festlegen
3. Vergleich zwischen den beiden Daten
4. Fall 1: alles ok, es muss nicht getan werden
4. Fall 2: Email soll verschickt werden, daher: Mailversand

Bis wohin kommst du denn noch selbst?

VG,
Mad
 
In Powershell geht das recht einfach, falls es eine .ps1 sein darf:

Code:
$date = (Get-Date).ToShortDateString()
$count = 0
ForEach( $File in Get-ChildItem ORDNERPFAD) { if(!$date -eq ($File.LastWriteTime).ToShortDateString() ){$count++}}
if ($count -gt 0) { SENDE MAIL }

Sobald eine (oder mehrere) Dateien nicht das heutige Datum haben, passiert das in den Klammern (SENDE MAIL).
Ist so bestimmt auch in Batch umsetzbar, da fehlt mir aber die Syntax.
 
Zuletzt bearbeitet:
Madman1209 schrieb:
Hi,

zerlege dein Problem mal in einzelne Punkte. Da bleiben für mich folgende übrig:

1. Datum der Dateien in Ordner auslesen
2. Aktuelles Datum festlegen
3. Vergleich zwischen den beiden Daten
4. Fall 1: alles ok, es muss nicht getan werden
4. Fall 2: Email soll verschickt werden, daher: Mailversand

Bis wohin kommst du denn noch selbst?

VG,
Mad
Hoi, danke für die rasche Antwort...
ich habe eh diese
https://www.computerbase.de/forum/t...-bzw-mit-aktuellem-datum-vergleichen.1463873/ Vorlage genommen...
dann versucht, da ein Logfile und einen Email Versand einzubauen...aber weiss nicht warum, klappt einfach nicht...
Log file hab ich vorher nicht dazu geschrieben...auch ohne wär ich schon voll zufrieden :)

@M4deman:
Danke, auf die Idee bin ich noch gar nicht gekommen :)
Leider hab ich mit PS noch relativ wenig getan...
{ SENDE MAIL } -> baue ich da dann "Send-MailMessage" ... ein ?



Danke
lg
la
 
Zuletzt bearbeitet:
M4deman schrieb:
Genau, in die Klammer kommt die Logik für den Mail Versand.
Geht z.B. per Send-MailMessage, richtig. Mehr dazu hier:

https://www.windowspro.de/script/send-mailmessage-e-mails-versenden-powershell

Hoi, nochmal

wenn ich das Script ausführe, erhalte ich immer diesen Fehler...
PS C:\TEMP\i> C:\TEMP\i\vergleich_date.ps1
count : Die Benennung "count" wurde nicht als Name eines Cmdlet, einer Funktion,
einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die
Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und
wiederholen Sie den Vorgang.
In C:\TEMP\i\vergleich_date.ps1:4 Zeichen:5
+ if (count -gt 0) {Send-MailMessage to "MeineMailAdresse" -Subject "T ...
+ ~~~~~
+ CategoryInfo : ObjectNotFound: (count:String) [], CommandNotFoundExc
eption
+ FullyQualifiedErrorId : CommandNotFoundException

was passt denn da nicht ?

danke

lg
la
 
Da fehlt ein $ in Zeile 4.
Hab's oben korrigiert.
 
M4deman schrieb:
Da fehlt ein $ in Zeile 4.
Hab's oben korrigiert.

Hoi,

Ich habe dass nun getestet, es wird auch erfolgreich ausgeführt, nur Email erhalte ich leider nicht und Fehler kommt auch keiner...
Ich denke mal, dass es an ASMTP liegt ... soweit so gut...habe nun eine gebastelt(Vorlage aus dem WWW und angepasst)...nur weiss ich nicht was jetzt wieder schief läuft...auch schon nach dem Fehler Hrn.Google befragt, aber nicht wirklich viel schlauer geworden...
Send-MailMessage : Das Remotezertifikat ist laut Validierungsverfahren ungültig.

//UPDATE
ok den Fehler hab ich denk ich behoben...dürfte am smtp port gelegen haben...
nur bekomme ich jetzt eine andere Fehlermeldung...
Send-MailMessage : Von der Übertragungsverbindung können keine Daten gelesen werden: Eine vorhandene Verbindung wurde vom Remotehost geschlossen.


//UPDATE2
so jetzt funktioniert es...hatte noch "-UseSsl" drin, braucht er aber anscheinend nicht, obwohl es aktiv ist...

//UPDATE3
so muss jetzt doch nochmal lästig sein...hab dass ganze Script ja fertig und wenn ich es ausführe, bekomme ich keine Fehlermeldung, aber auch kein Mail...die Testdatei ist nicht von heute...

$date = (Get-Date).ToShortDateString()
$count = 0
ForEach( $File in Get-ChildItem E:\archive.7z.009) { if(!$date -eq
($File.LastWriteTime).ToShortDateString() ){$count++}}

$SMTPServer = ""
$SMTPPort = 25
$username = "user"
$password = ConvertTo-SecureString "pw" -AsPlainText -Force

$From = "meineMail"
$To = "SeineMail"
$Subject = "TESTMAIL"
$Body = @"
Test
"@

$creds = New-Object System.Management.Automation.PSCredential ($username, $password)
if ($count -gt 0) {Send-MailMessage -To $To -From $From -Subject $Subject -Body $Body -SmtpServer $SMTPServer -Credential $creds -encoding ([System.Text.Encoding]::UTF8) -Port $SMTPPort}

hoffe ihr könnt mir da helfen...kann ja nur mehr eine Kleinigkeit sein...oder:confused_alt:


danke
lg
la
 
Zuletzt bearbeitet:
Zurück
Oben