Batch Script zum erkennen einer Datei nach Datum und Übergabe des entsprechenden Dateinamens der aktuellsten Datei neuesten Datums
[Edit] Als Musterlösung hochgestuft von "Beitrag" zu "Tutorial" [/Edit Biber]
Hallo @all Folks,
nachdem ich hier super schnell und super nett gleich einen Lösungsansatz für mein Hauptproblem in einem anderen Forum gefunden habe möchte ich an dieser
Stelle weiter nach der perfekten Detaillösung bohren...
Es geht um folgendes Grundproblem:
Sicherungen, die auf einem W2K und/oder 2K3-Server per ntbackup erstellt werden, geben per eMail keine Benachrichtigung - was echt läßtig sein kann wg. manueller
Überprüfung der Sicherungen.
Der erste mir gegebene Tipp ist: blat.exe - kleiner Console basierender SMTP-Client - recht umfangreiche Konfiguration möglich - prima Tool!
Dieses Tool kann z.B. den Inhalt einer Text-/Logdatei von einem beliebigen Server aus als Body einer eMail an meinen Verwaltungsaccount senden.
Das klappt auch prima - hab ich heute gleich getestet.
Nun mein Problem:
Ich möchte gerne den Inhalt der Logfiles von ntbackup täglich per eMail an meinen Verwaltungsaccount senden. Somit sehe ich gleich in der eMail, ob alle Pfade etc. gesichert
wurden, und der Job korrekt ausgeführt wurde.
ntbackup erstellt aber pro Job eine neue Logdatei. Also z.B. job01.log, job02.log, job03.log - aber immerhin: immer im gleichen Verzeichnis - grins
Ich habe also eine batch-Datei erstellt, die per Taskplaner jede Nacht startet - kann hier aber natürlich nur einen statischen Dateinamen festlegen.
Es wäre nun also prima, wenn ich aus dem statischen Dateinamen eine Variable machen könnte, und diese vorher abfragt, welche Log-Datei im Verzeichnis denn die aktuellste ist.
(Bitte keinen Lösungsansatz mit: Dateiname-0n+1 / denn wenn man dann die Logdateien löscht, beginnt ntbackup wieder mit job01.txt - der Zähler steht dann aber bei n+n...)
Von der aktuellsten Datei benötigt man dann also den aktuellen Dateinamen als Variable - diese steht dann in der Batchdatei - das wäre für mich perfekte Lösung.
Kann mir hierzu jemand einen Tip geben? Wie geht das?
Vielleicht kann man das ja auch gleich in einer einzigen batch-datei abfragen?
...welche Datei (xxx.log) ist die neueste im Verzeichnis xy?
...welchen Dateinamen hat diese Datei?
...Dateiname=VariableX
Dann kommt der Befehl für blat: blat.exe "c:\%SYSTEMROOT%\Logs\VariableX" -to verwaltungsaccount@meinedomain.de
Vielen Dank schon mal dafür, dass ihr o.s. Kauderwelsch gelesen und zu verstehen versucht habt - wenn jetzt noch eine gute Lösung dabei herauskommt
habt ihr sogar die Chance auf 1000x Dank von mir
Gruß
Der Pazifist
Hallo @all Folks,
nachdem ich hier super schnell und super nett gleich einen Lösungsansatz für mein Hauptproblem in einem anderen Forum gefunden habe möchte ich an dieser
Stelle weiter nach der perfekten Detaillösung bohren...
Es geht um folgendes Grundproblem:
Sicherungen, die auf einem W2K und/oder 2K3-Server per ntbackup erstellt werden, geben per eMail keine Benachrichtigung - was echt läßtig sein kann wg. manueller
Überprüfung der Sicherungen.
Der erste mir gegebene Tipp ist: blat.exe - kleiner Console basierender SMTP-Client - recht umfangreiche Konfiguration möglich - prima Tool!
Dieses Tool kann z.B. den Inhalt einer Text-/Logdatei von einem beliebigen Server aus als Body einer eMail an meinen Verwaltungsaccount senden.
Das klappt auch prima - hab ich heute gleich getestet.
Nun mein Problem:
Ich möchte gerne den Inhalt der Logfiles von ntbackup täglich per eMail an meinen Verwaltungsaccount senden. Somit sehe ich gleich in der eMail, ob alle Pfade etc. gesichert
wurden, und der Job korrekt ausgeführt wurde.
ntbackup erstellt aber pro Job eine neue Logdatei. Also z.B. job01.log, job02.log, job03.log - aber immerhin: immer im gleichen Verzeichnis - grins
Ich habe also eine batch-Datei erstellt, die per Taskplaner jede Nacht startet - kann hier aber natürlich nur einen statischen Dateinamen festlegen.
Es wäre nun also prima, wenn ich aus dem statischen Dateinamen eine Variable machen könnte, und diese vorher abfragt, welche Log-Datei im Verzeichnis denn die aktuellste ist.
(Bitte keinen Lösungsansatz mit: Dateiname-0n+1 / denn wenn man dann die Logdateien löscht, beginnt ntbackup wieder mit job01.txt - der Zähler steht dann aber bei n+n...)
Von der aktuellsten Datei benötigt man dann also den aktuellen Dateinamen als Variable - diese steht dann in der Batchdatei - das wäre für mich perfekte Lösung.
Kann mir hierzu jemand einen Tip geben? Wie geht das?
Vielleicht kann man das ja auch gleich in einer einzigen batch-datei abfragen?
...welche Datei (xxx.log) ist die neueste im Verzeichnis xy?
...welchen Dateinamen hat diese Datei?
...Dateiname=VariableX
Dann kommt der Befehl für blat: blat.exe "c:\%SYSTEMROOT%\Logs\VariableX" -to verwaltungsaccount@meinedomain.de
Vielen Dank schon mal dafür, dass ihr o.s. Kauderwelsch gelesen und zu verstehen versucht habt - wenn jetzt noch eine gute Lösung dabei herauskommt
habt ihr sogar die Chance auf 1000x Dank von mir
Gruß
Der Pazifist
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 43102
Url: https://administrator.de/tutorial/batch-script-zum-erkennen-einer-datei-nach-datum-und-uebergabe-des-entsprechenden-dateinamens-der-aktuellsten-43102.html
Ausgedruckt am: 22.12.2024 um 22:12 Uhr
14 Kommentare
Neuester Kommentar
(Bitte keinen Lösungsansatz mit:
Dateiname-0n+1 / denn wenn man dann die
Logdateien löscht, beginnt ntbackup
wieder mit job01.txt - der Zähler steht
dann aber bei n+n...)
Genau da steht doch schon eine Lösung Dateiname-0n+1 / denn wenn man dann die
Logdateien löscht, beginnt ntbackup
wieder mit job01.txt - der Zähler steht
dann aber bei n+n...)
Du brauchst 2 Batches:
(aus dem Kopf hingeschrieben, also sind sicher noch Fehler drin *g*)
Batchlauf.cmd:
SET LogPfad=c:\was\weis\ich
for %i in (%logPfad%\job*.log) do call SendLog.cmd %i
:EOF
SendLog.cmd:
SET LogPfad=c:\was\weis\ich
SET SavePfad=c:\was\weis\ich\gesendet
blat /mit /paar /optionen /body=%LogPfad%\%1
move %LogPfad%\%1 %SavePfad%\%1
:EOF
Im Klartext: Batchlauf.cmd durchläuft alle job*.log dateien im LogPfad und startet dann SendLog.cmd mit dem gefunden Dateinamen.
SendLog.cmd verschickt die Datei dann per blat.exe und verschiebt sie in ein anderes Verzeichnis.
Evtl. noch bissl ERRORLEVELS abprüfen und gut ist's
Benutz -attach wenn du Blat benutzen willst. Dann kannst du Anhänge verschicken.....
Zitat aus der Manual:
Attachment and encoding options -----------------------
-attach <file> : attach binary file(s) to message (filenames comma separated)
-attacht <file> : attach text file(s) to message (filenames comma separated)
-attachi <file> : attach text file(s) as INLINE (filenames comma separated)
gruß
BrooklynX
Zitat aus der Manual:
Attachment and encoding options -----------------------
-attach <file> : attach binary file(s) to message (filenames comma separated)
-attacht <file> : attach text file(s) to message (filenames comma separated)
-attachi <file> : attach text file(s) as INLINE (filenames comma separated)
gruß
BrooklynX