michi-ffm
Goto Top

Batch xls nach aktuellem Datum auslesen und email senden

Hallo Leute,

ich hänge schon seid langem an diesem Skript. Da meine Batch Kenntnisse miserabel sind brauche ich eure Hilfe.

Jeden Tag Aktualisieren sich 3 xls Datei die in einem Verzeichnis liegen z.b. "14564.xls" , "39876.xls" und "57863.xls" im Ordner "Kunden"
Die Dateinamen ändern sich nie! jeglich nur der Änderungsdatum.

So meine Herausforderung ist das ich eine Batch Datei brauche die prüft, ob diese 3 Dateien auch dem aktuellen Datum entsprechen!
Und mir dann eine Protokoll Email sendet!

Kann mir da jemand evtl weiterhelfen?

Mit freundlichen Grüßen
Michael

Content-ID: 326614

Url: https://administrator.de/contentid/326614

Ausgedruckt am: 22.11.2024 um 11:11 Uhr

131381
131381 17.01.2017 um 13:02:06 Uhr
Goto Top
@echo off & setlocal
for %%a in ("C:\Ordner\Kunden\*.xls") do (  
    for /f "tokens=1" %%b in ("%~ta") do (  
        if "%%b" == "%date%" (  
            echo Datum von %%a ist von heute.
        ) else (
            echo ACHTUNG: Datum von %%a entspricht nicht dem heutigen.
       )
    )
)
Das ganze per mail senden kannst du dann mit dem Tool deiner Wahl.

Gruß mik
michi-ffm
michi-ffm 17.01.2017 um 13:13:53 Uhr
Goto Top
Zunächst Vielen lieben Dank für deine schnelle Rückmeldung

Leider gibt er mir eine Fehlermeldung die ich nicht lesen kann!
pause am Ende vom skript lässt die Konsole nicht offen!

@echo off & setlocal
for %%a in ("C:\Users\Michael\Desktop\1\*.xls") do (  
    for /f "tokens=1" %%b in ("%~ta") do (  
        if "%%b" == "%date%" (  
            echo Datum von %%a ist von heute.
			echo.
        ) else (
            echo ACHTUNG: Datum von %%a entspricht nicht dem heutigen.
			echo.
       )
    )
	
)
pause


set SMTP=*
set SUBJECT=Testmailing 
set BODY=Hier wurde die Nachricht kommen
set FROM=Powershell@%computername% 
set TO=*****
echo ich sende eine mail 

powershell -ExecutionPolicy Unrestricted -c "Send-MailMessage -To '%TO%' -Subject '%SUBJECT%' -Body '%BODY%' -SmtpServer '%SMTP%' -From '%FROM%'"  

A. Wie kann ich diese beiden Codes zusammenfügen? Wie gesagt batch Kenntnisse == 0 face-smile
B. Der soll jedoch nicht alle xls auslesen nur die 3 genannten!
131381
131381 17.01.2017 aktualisiert um 13:45:06 Uhr
Goto Top
Wenn du sowieso Powershell verwendest warum machst du es nicht gleich damit face-wink
@echo off & setlocal
set "SMTP=smtp.server.de"  
set "SUBJECT=Testmailing"  
set "FROM=Powershell@%computername%"  
set "TO=*****"  
powershell -Executionpolicy ByPass -Command "$report = (gci 'C:\Users\Michael\Desktop\1\*' -Include '14564.xls','39876.xlsl','57863.xls' | %%{\"Datum für $($_.Name) : $(@{$true='OK';$false='FEHLER'}[$_.LastWriteTime.Date -eq (get-date).Date])\"}) -join [environment]::Newline; Send-MailMessage -To '%TO%' -Subject '%SUBJECT%' -Body $report -SmtpServer '%SMTP%' -From '%FROM%'"  
Wie gesagt batch Kenntnisse == 0
Das lässt sich durch lesen von Dokus ändern...
Pjordorf
Pjordorf 17.01.2017 um 13:25:14 Uhr
Goto Top
Hallo,

Zitat von @michi-ffm:
pause am Ende vom skript lässt die Konsole nicht offen!
Dann diese Batch in ein schon geöffnetes Kommandozeilefenster (CMD Window) ausführen (per Hand). Dann bleibt dir auch etwas zum lesen.

A. Wie gesagt batch Kenntnisse == 0 face-smile
Warum machst du das dann? Alles in einer Batchdatei packen oder halt von der ersten die 2te Bachtdatei aufrufen. CALL währe eine möglichkeit.

Gruß,
Peter
michi-ffm
michi-ffm 17.01.2017 um 13:41:11 Uhr
Goto Top
Hast schon Recht! Nicht nachgedacht!
Jedoch wollte ich eigentlich die Batch Datei in die Aufgabenplanung einbinden.

Der Code vorher hat mir jedoch eine Mail senden können!
Leider gibt er mir nun folgende Fehlermeldung siehe Anhang:
unbenannt
131381
131381 17.01.2017 um 13:45:26 Uhr
Goto Top
Sorry kleiner Fehler, ist oben korrigiert.
michi-ffm
michi-ffm 17.01.2017 um 13:48:30 Uhr
Goto Top
Hut ab!
Respekt Vielen Dank für Ihre Bemühungen!

Meine Kenntnisse liegen leider nur in PHP und mit Batch befasse ich momentan etwas!
131381
131381 17.01.2017 um 14:53:02 Uhr
Goto Top
Na dann fehlt ja nur noch ein gelöst hinten dran.
michi-ffm
michi-ffm 17.01.2017 um 15:08:09 Uhr
Goto Top
eine Sache noch face-smile

Diese Code funktioniert einwandfrei:
@echo off & setlocal
set "SMTP=smtp.server.de"  
set "SUBJECT=Testmailing"  
set "FROM=Powershell@%computername%"  
set "TO=*****"  
powershell -Executionpolicy ByPass -Command "$report = (gci 'C:\Users\Michael\Desktop\1\*' -Include '14564.xls','39876.xlsl','57863.xls' | %%{\"Datum für $($_.Name) : $(@{$true='OK';$false='FEHLER'}[$_.LastWriteTime.Date -eq (get-date).Date])\"}) -join [environment]::Newline; Send-MailMessage -To '%TO%' -Subject '%SUBJECT%' -Body $report -SmtpServer '%SMTP%' -From '%FROM%'"  

Besteht die Möglichkeit mehrere Pfade zu prüfen? jedoch die gleichen Dateien

z.b.
(gci 'C:\Users\Michael\Desktop2\1\*' -Include '14564.xls','39876.xlsl','57863.xls'  
(gci 'C:\Users\Michael\Desktop3\1\*' -Include '14564.xls','39876.xlsl','57863.xls'  
(gci 'C:\Users\Michael\Desktop4\1\*' -Include '14564.xls','39876.xlsl','57863.xls'  
131381
131381 17.01.2017 um 15:32:05 Uhr
Goto Top
@echo off & setlocal
set "SMTP=smtp.server.de"  
set "SUBJECT=Testmailing"  
set "FROM=Powershell@%computername%"  
set "TO=*****"  
powershell -Executionpolicy ByPass -Command "$report = (gci '\\192.168.168.1\Kunde\*','\\192.168.168.2\Kunde\*','\\192.168.168.3\Kunde\*' -Include '14564.xls','39876.xlsl','57863.xls' | %%{\"Datum für $($_.Fullname) : $(@{$true='OK';$false='FEHLER'}[$_.LastWriteTime.Date -eq (get-date).Date])\"}) -join [environment]::Newline; Send-MailMessage -To '%TO%' -Subject '%SUBJECT%' -Body $report -SmtpServer '%SMTP%' -From '%FROM%'"  
michi-ffm
michi-ffm 17.01.2017 um 15:53:32 Uhr
Goto Top
Sorry falsch formuliert:

(gci '192.168.168.01\Kunde\*' -Include '14564.xls','39876.xlsl','57863.xls'  
(gci '192.168.168.02\Kunde\*' -Include '14564.xls','39876.xlsl','57863.xls'  
(gci '192.168.168.03\Kunde\*' -Include '14564.xls','39876.xlsl','57863.xls'  
131381
131381 17.01.2017 aktualisiert um 16:01:34 Uhr
Goto Top
Oh man, wie wär's mal mit Doku lesen,
https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powe ...

s. letztes Kommentar ..

i'm out now.
michi-ffm
michi-ffm 17.01.2017 um 16:10:48 Uhr
Goto Top
Trotzdem vielen vielen Dank face-smile
Sehr nett von ihnen
131381
Lösung 131381 17.01.2017 aktualisiert um 16:54:26 Uhr
Goto Top
Keine Ursache, dann noch das Gelöst dran pappen und gut is.

Gruß mik

p.s. Du kannst hier die Leute ruhig dutzen, so förmlich handhaben wir das hier nicht face-smile.