Dateien per Batch prüfen
Hallo!
Ich habe eine Frage zur verwendung von Batch Dateien.
Ist es möglich per Batch Datei die Uhrzeit der letzten Änderung einer Datei zu prüfen, um daraufhin einen weiteren Befehl auszuführen?
Ähnlich dem Tool "forfiles", nur dass man ja bei diesem nur das Datum der letzten Änderung prüfen kann.
Das Ziel ist, das automatisch in einem Ordner geprüft wird ob dort Dateien liegen die älter als 30 Minuten sind und daraufhin der Admin per Net Send eine Nachricht erhält.
Danke schon einmal für eure Hilfe!
Alex
Ich habe eine Frage zur verwendung von Batch Dateien.
Ist es möglich per Batch Datei die Uhrzeit der letzten Änderung einer Datei zu prüfen, um daraufhin einen weiteren Befehl auszuführen?
Ähnlich dem Tool "forfiles", nur dass man ja bei diesem nur das Datum der letzten Änderung prüfen kann.
Das Ziel ist, das automatisch in einem Ordner geprüft wird ob dort Dateien liegen die älter als 30 Minuten sind und daraufhin der Admin per Net Send eine Nachricht erhält.
Danke schon einmal für eure Hilfe!
Alex
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 18567
Url: https://administrator.de/contentid/18567
Ausgedruckt am: 23.11.2024 um 08:11 Uhr
10 Kommentare
Neuester Kommentar
wenn du VB 6 hast, ist das in 10 Minuten fertigprogrammiert. Hab das mal als Kontrollroutine gemacht um sicherzustellen, ob generierte PDFs richtig verschoben werden.
Aber als Kommandozeilen-Batch hast du ja nicht die Möglichkeit auf die Objekteigenschaften wie Besitzer, Größe, Änderungsdatum etc. direkt zuzugreifen.
Ich wüsste auch nicht, dass es eine Art Linux-grep-Befehl für die Windows Kommandozeile gibt...
Nur warum nutzt du nicht forfiles, wenn es die die letzte Änderungszeit angibt? Keine Kommandozeilenausgabe?
Aber als Kommandozeilen-Batch hast du ja nicht die Möglichkeit auf die Objekteigenschaften wie Besitzer, Größe, Änderungsdatum etc. direkt zuzugreifen.
Ich wüsste auch nicht, dass es eine Art Linux-grep-Befehl für die Windows Kommandozeile gibt...
Nur warum nutzt du nicht forfiles, wenn es die die letzte Änderungszeit angibt? Keine Kommandozeilenausgabe?
Hm, wrathchild,
mit Deiner Anforderung des "Dateien-älter-als-30-Minuten" hast Du aber M$ voll in den Schritt gefasst...
So kleine Einheiten (kleiner als Tag) gehen IMHO weder mit ForFiles noch bei XCopy/RoboCopy. Und über den CMD-Prompt bekommst Du natürlich die Erstellungs- oder letzte Änderungszeit raus, aber Du müsstest dann selbst eine ziemlich alberne Prüfung zusammenschroten, um den String "Aktuelle Zeit" und den String "Letzte Änderungszeit" zu vergleichen oder in Minuten umzurechnen.... würde ich erstmal als Plan B zurückstellen.
(Aber wenn Du dieses Rad nochmal nacherfinden willst - machbar ist das auch schnell *g)
Plan A wäre dann folgende Strategie:
- Ein Batch- , VB- oder sonstiges Light-Script schreiben, das alle 30 Min als Dienst gestartet wird
- das soll nur alle Dateien OHNE Attribut "A" suchen ("dir /A:-A")
- wenn er welche findet, diese an Wen-auch-immer melden/mailen
- alle gemeldeten mit "Attrib +a *.*" für die nächste Runde unsichtbar machen
Sollte vollkommen reichen.
HTH
Frank / der Biber aus Bremen
[Edit] Sorry, die beiden anderen Beiträge waren noch nicht da, als ich angefangen habe, zu tippen. [/Edit]
mit Deiner Anforderung des "Dateien-älter-als-30-Minuten" hast Du aber M$ voll in den Schritt gefasst...
So kleine Einheiten (kleiner als Tag) gehen IMHO weder mit ForFiles noch bei XCopy/RoboCopy. Und über den CMD-Prompt bekommst Du natürlich die Erstellungs- oder letzte Änderungszeit raus, aber Du müsstest dann selbst eine ziemlich alberne Prüfung zusammenschroten, um den String "Aktuelle Zeit" und den String "Letzte Änderungszeit" zu vergleichen oder in Minuten umzurechnen.... würde ich erstmal als Plan B zurückstellen.
(Aber wenn Du dieses Rad nochmal nacherfinden willst - machbar ist das auch schnell *g)
Plan A wäre dann folgende Strategie:
- Ein Batch- , VB- oder sonstiges Light-Script schreiben, das alle 30 Min als Dienst gestartet wird
- das soll nur alle Dateien OHNE Attribut "A" suchen ("dir /A:-A")
- wenn er welche findet, diese an Wen-auch-immer melden/mailen
- alle gemeldeten mit "Attrib +a *.*" für die nächste Runde unsichtbar machen
Sollte vollkommen reichen.
HTH
Frank / der Biber aus Bremen
[Edit] Sorry, die beiden anderen Beiträge waren noch nicht da, als ich angefangen habe, zu tippen. [/Edit]
@alex
Nein, ich hätte bei meinem Plan A ganz auf die Datums/Zeitprüfung verzichtet - eben aus dem Grund, dass ich eh keinen Stunden-Input mitgeben kann und auch als Output nur Strings zurückbekomme (keine datetime-Werte o.ä.)
Und das Umrechnen war/ist mir zu albern.
Ich wollte "nur" die Dateien ...hmm.. markieren.
Also vom DIR-Befehl nur nutzen:
DIR [Laufwerk:][Pfad][Dateiname] [/A[[:]Attribute]] [/B] [/C] [/D] [/L] [/N]
[/O[[:]Folge]] [/P] [/Q] [/S] [/T[[:]Zeit]] [/W] [/X] [/4]
[Laufwerk:][Pfad][Dateiname]
Bezeichnet Laufwerk, Verzeichnis und/oder Dateien.
/A Listet Dateien mit angegebenen Attributen auf.
Attribute D Verzeichnisse R Schreibgeschützte Dateien
H Versteckte Dateien A Zu archivierende Dateien
S Systemdateien - vorangestellt kehrt die Bedeutung um
@Martin Mit einer VB-Exe auf den kleinen Spatzen schießen finde ich aber auch machohaft
Nein, ich hätte bei meinem Plan A ganz auf die Datums/Zeitprüfung verzichtet - eben aus dem Grund, dass ich eh keinen Stunden-Input mitgeben kann und auch als Output nur Strings zurückbekomme (keine datetime-Werte o.ä.)
Und das Umrechnen war/ist mir zu albern.
Ich wollte "nur" die Dateien ...hmm.. markieren.
Also vom DIR-Befehl nur nutzen:
dir /?
Listet die Dateien und Unterverzeichnisse eines Verzeichnisses auf.DIR [Laufwerk:][Pfad][Dateiname] [/A[[:]Attribute]] [/B] [/C] [/D] [/L] [/N]
[/O[[:]Folge]] [/P] [/Q] [/S] [/T[[:]Zeit]] [/W] [/X] [/4]
[Laufwerk:][Pfad][Dateiname]
Bezeichnet Laufwerk, Verzeichnis und/oder Dateien.
/A Listet Dateien mit angegebenen Attributen auf.
Attribute D Verzeichnisse R Schreibgeschützte Dateien
H Versteckte Dateien A Zu archivierende Dateien
S Systemdateien - vorangestellt kehrt die Bedeutung um
@Martin Mit einer VB-Exe auf den kleinen Spatzen schießen finde ich aber auch machohaft
Hi,
ich habe die gleiche Problemstellung.
Ich muß überprüfen ob eine Datei älter als x Minuten ist. Ist dies der Fall muß ich ein Net Send absetzten oder eine Mail erzeugen(sprich Benachrichtigung).
Da das Thema aber schon etwas angeraut ist, kennt jemand ein kleines Tool um das Problem zu lösen?
Danke
Markor
ich habe die gleiche Problemstellung.
Ich muß überprüfen ob eine Datei älter als x Minuten ist. Ist dies der Fall muß ich ein Net Send absetzten oder eine Mail erzeugen(sprich Benachrichtigung).
Da das Thema aber schon etwas angeraut ist, kennt jemand ein kleines Tool um das Problem zu lösen?
Danke
Markor
Moin Markor,
sorry, hab Deinen Kommentar eben erst gefunden.
Ein Tool dazu brauchen wir nach heutigem Kenntnisstand nicht... wir haben mittlerweiler mehrere Beispiele in "Batch & Shell", die mit einer Handvoll Zeilen ein temporäres VBSkript mit Aufruf der Funktion Datediff() erzeugen.
Such mal über Forumssuche nach "Dateien älter als" ohne ähnliches.
Solltest Du über den Weg nichts in vertretbarer Zeit finden, mach bitte in "Batch & Skript" einen eigenen Beitrag auf. Mit sinnvollem Titel... dieser hier hat da noch Potentiale.
Dieser hier ist eigentlich überholt... out of date.
Grüße
Biber
[Edit 19.5.2008]
Markor hat es mittlerweile mit WasFile gelöst in einem seiner anderen Beiträge. Daher schließe ich jetzt diesen Thread. [/Edit]
sorry, hab Deinen Kommentar eben erst gefunden.
Ein Tool dazu brauchen wir nach heutigem Kenntnisstand nicht... wir haben mittlerweiler mehrere Beispiele in "Batch & Shell", die mit einer Handvoll Zeilen ein temporäres VBSkript mit Aufruf der Funktion Datediff() erzeugen.
Such mal über Forumssuche nach "Dateien älter als" ohne ähnliches.
Solltest Du über den Weg nichts in vertretbarer Zeit finden, mach bitte in "Batch & Skript" einen eigenen Beitrag auf. Mit sinnvollem Titel... dieser hier hat da noch Potentiale.
Dieser hier ist eigentlich überholt... out of date.
Grüße
Biber
[Edit 19.5.2008]
Markor hat es mittlerweile mit WasFile gelöst in einem seiner anderen Beiträge. Daher schließe ich jetzt diesen Thread. [/Edit]