Jump to content
Melde dich an, um diesen Inhalt zu abonnieren  
monstermania

VBS: Nur Dateien älter 5 Minuten in einem Ordner verarbeiten

Empfohlene Beiträge

Folgendes Problem.

In einem Ordner befinden sich rund 9000 CSV-Dateien (Anzahl weiter steigend).

Ich will nur all die CSV-Dateien herausfinden, die in der letzten Stunde neu erstellt wurden.

 

An sich kein Problem, aber durch die schiere Anzahl der Dateien im Ordner wird es so langsam zu einem Problem. Bereits jetzt benötigt ein Durchlauf über 10 Minuten.

Das Problem, ist, dass das Script halt jede Datei im Order prüfen muss...

For Each sFile In sFolder.Files

Gibt es eine Möglichkeit per VBS die Dateien nach Datum vorzufiltern, so dass z.B. nur Dateien überprüft werden, die z.B. aus dem aktuellen Jahr sind?

 

Gruß

Dirk

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Moin,

 

sFile.DateCreated

sFile.DateLastAccessed

sFile.DateLastModified

 

Sinnvoller wäre allerdings das Präfix o, weil du ja keine Strings, sondern Objekte am Wickel hast.

 

Gruß, Nils

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Moin,

 

 

In einem Ordner befinden sich rund 9000 CSV-Dateien (Anzahl weiter steigend).

Ich will nur all die CSV-Dateien herausfinden, die in der letzten Stunde neu erstellt wurden.

 

Müssen die 9000 Dateien im Ordner für weitere Aktionen bestehen bleiben oder könnten die Daten nach deiner Verarbeitung ggf. in eine Art Archivordner verschoben werden?

 

Gruß Sebastian

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Muss es VBS sein?

Mit Powershell ginge z.B. sowas

$items = Get-ChildItem -Path C:\MeinPfad | Where{$_.CreationTime -ge (Get-Date).AddMinutes(-60)}
$items

da kommt bei mir bei nem Verzeichnis mit 30000 Dateien nach rd. 4 Sekunden ein Ergebnis!

 

$items kann natürlich hinterher mit "For-Each" etc. weiterverarbeitet werden ;-)

 

...Hoppla... zu langsam ;-)

bearbeitet von Cybquest

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

.... und noch mal eine Verständnis-Nachfrage von mir: Im Betreff fragst Du nach Dateien, die älter sind als 5 Minuten. Dann fragst Du nach Dateien, die in der letzten Stunde neu erstellt wurden und am Schluss fragst Du nach Dateien, die z.B. aus dem aktuellen Jahr sind.   :)  :D  ;)  :schreck:   Vielleicht solltest Du die erwünschten Rahmenbedingungen erst mal konkret festlegen!? :cool:

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Wenn sowas richtig Zeitkritisch ist dann wäre evtl. eine alternative eine Datenbank parallel zu führen und bei Dateiänderungen diese Datenbank zu pflegen (siehe z.B.: http://openbook.rheinwerk-verlag.de/visual_csharp/visual_csharp_20_003.htm).Wenn du die Daten dann brauchst ist ein Select schneller als alle Dateien abzufragen.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

@all

Danke

 

Nein, PS ist keine Option (zumindest noch nicht :rolleyes: ).

 

Kurz zur Erklärung was das Script macht bzw. machen soll.

Ein Prüfstand erzeugt Protokolle (Diagramm als PDF- und Messwerte als CSV-Dateien). Diese werden vom Prüfstand automatisch in einem Ordner abgelegt.

Aufgabe ist, für jedes Protokoll ein Formular (PDF) zu erzeugen, was an den Kunden geschickt wird. Dazu wird eine Word-Fomularvorlage mit den Werten aus der CSV-Datei und einem ERP-System (SQL-db) verknüpft/gefüllt und als Endabnahmeprotokoll als PDF gespeichert bzw. gedruckt.

 

Mein eigentliches Problem war ja schlichtweg die Anzahl der CSV-Dateien im Ordner. Jeder Durchlauf des Scripts durch den Ordner braucht(e) mehr als 10 Minuten und dann kam im schlimmsten Fall gar nichts heraus, weil seit dem letzten Durchlauf gar keine neuen Prüfstandtests gemacht wurden! Und außerdem hat es immer mindestens die Zeit gebraucht, bis wieder ein Durchlauf gestartet werden kann...

 

Eine "Lösung" für mein Problem zu finden war recht einfach. Ein simples 'xcopy quelle ziel /d:mm-dd-yyyy /y' im Script kopiert alle csv-Dateien => dem aktuellen Datum in ein Importverzeichnis. Das sind dann nur wenige Dateien am Tag.

Darauf läuft dann erste meine VBS-Programmierung los.

Da die verarbeiteten CSV-Dateien anschließend eh in einer Datenbank erfasst werden, ist es kein Problem die bereits beim letzten Durchlauf verarbeiteten CSV-Dateien aus dem Importordner zu löschen, ohne das ein Endabnahmeprotokoll erzeugt wird.

Vielleicht nicht unbedingt die eleganteste Lösung, aber zumindest eine ohne viel Aufwand.  :D

Insgesamt braucht das Script jetzt nur ein paar Sekunden... 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Moin,

 

OK, prima, danke für die Rückmeldung.

 

An diesem Thread lässt sich übrigens sehr schön erkennen, warum es sinnvoll ist, auch die Hintergründe einer Frage anzugeben. Hätten wir gewusst, was du eigentlich willst, wäre mit Sicherheit ein Lösungsvorschlag in dieser Richtung bei der ersten oder zweiten Antwort gekommen. Stattdessen haben wir gestochert und uns mit der Detailfrage beschäftigt, die am Ende gar nicht gelöst werden musste.

 

Aber gut, dass es jetzt klappt.

 

Gruß, Nils

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
Melde dich an, um diesen Inhalt zu abonnieren  

×