Jump to content

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


Direkt zur Lösung Gelöst von monstermania,
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

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

 

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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
Link zu diesem Kommentar

.... 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:

Link zu diesem Kommentar
  • Beste Lösung

@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... 

Link zu diesem Kommentar

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

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...