wrathchild
Goto Top

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

Content-ID: 18567

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

Ausgedruckt am: 23.11.2024 um 08:11 Uhr

azubaer
azubaer 27.10.2005 um 14:17:58 Uhr
Goto Top
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?
wrathchild
wrathchild 27.10.2005 um 14:23:18 Uhr
Goto Top
Hi!

Danke für die schnelle Antwort.
Ich habe als Programmierumgebung von meiner Firma her Visual Studio. Da ist ja VB mit an Bord.
Nur habe ich leider noch nie mit VB Programmiert, bisher habe ich mit Java und Eclipse gearbeitet.
Ich dachte mir das es als Batch vielleicht einen simplen Weg gäbe.
Forfiles kann leider nur das Datum (TT/MM/JJJJ) aber nicht die Zeit als Werte nutzen.
Kannst Du mir denn vielleicht kurz beschreiben wie das mit VB zu realisieren wäre?

Danke face-smile
Alex
Biber
Biber 27.10.2005 um 14:28:18 Uhr
Goto Top
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]
wrathchild
wrathchild 27.10.2005 um 14:43:58 Uhr
Goto Top
Hi Frank!
Danke auch für Deine Antwort face-smile Je mehr möglichkeiten sich mir auftun um so besser ;)

mit Deiner Anforderung des
"Dateien-älter-als-30-Minuten"
hast Du aber M$ voll in den Schritt
gefasst...

Das hab ich mir nach meiner ersten Recherche auch schon gedacht... gelobt sei UNIX face-smile Nur leider hab ich da nur bei meinem Studium Kontakt zu gehabt, und mein erster Gedanke war das muss doch bei MS auch gehen... Tja....

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

Kann man denn beim "Dir" Befehl auch die Zeit als Attribut nehmen? Oder wie meinst Du das genau?

Es handelt sich bei dem Ordner um ein Austauschverzeichnis zu einer SAP XI, die sich dort die Dateien abholt und verschiebt.
Ich möchte eben einfach nur prüfen, ob die Dateien die in diesem Ordner liegen noch abgeholt werden oder schon längst abgeholt worden sein müssten.

Viele Grüße,
Alex
azubaer
azubaer 27.10.2005 um 14:44:58 Uhr
Goto Top
Gib mal mail. Habs dir fertigprogrammiert
Biber
Biber 27.10.2005 um 15:08:23 Uhr
Goto Top
@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 /?
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 face-wink
azubaer
azubaer 27.10.2005 um 15:14:57 Uhr
Goto Top
der zweck heiligt die mittel.
ich hab in meiner alten firma so pfuschen gelernt face-smile
wrathchild
wrathchild 27.10.2005 um 15:20:35 Uhr
Goto Top
Ich bin ja begeistert wie schnell das hier geht face-smile

@Frank
jetzt verstehe ich was Du meinst, also praktisch wie mit chmod unter Unix?

@Martin
Hab Dir eine PM mit meiner Mail geschickt, Danke face-smile !
Markor
Markor 15.05.2008 um 09:02:46 Uhr
Goto Top
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
Biber
Biber 17.05.2008 um 12:48:16 Uhr
Goto Top
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]