2013-04-29 15 views
6

Ich muss die Dateien in einem bestimmten Ordner in absteigender Reihenfolge von "Last Modified Date" durchlaufen.Schleife durch ALLE Dateien in einem Ordner basierend auf "Last Modified Date"

In der ersten Iteration der Schleife muss ich in der Lage sein, die zuletzt geänderte Datei zum Lesen zu öffnen und zu schließen. In der zweiten Iteration muss ich in der Lage sein, die zweite zuletzt aktualisierte Datei zum Lesen zu öffnen und schließen Sie es usw.

  1. a Gibt es in Verfahren gebaut, dass ein FileSystemObject sortieren die Dateien oder tun können wir absolut muss benutzerdefinierte Sortierroutine schreiben?

  2. Wenn wir mit einer benutzerdefinierten Sortierroutine gehen müssen, ist es möglich, dies zu schreiben, ohne mehrere Funktionen zu haben? d.h. alle Codes in der Hauptfunktion.

  3. Geschwindigkeit ist ein Problem, da es viele Dateien zu sortieren gibt. Daher sollten alle benutzerdefinierten Verfahren effizient sein.

Antwort

9

Sie können die Dateinamen und Daten in einem nicht verbundenen recordset und sortieren, dass nach dem Datum lesen:

Set fso = CreateObject("Scripting.FileSystemObject") 

Set list = CreateObject("ADOR.Recordset") 
list.Fields.Append "name", 200, 255 
list.Fields.Append "date", 7 
list.Open 

For Each f In fso.GetFolder("C:\some\where").Files 
    list.AddNew 
    list("name").Value = f.Path 
    list("date").Value = f.DateLastModified 
    list.Update 
Next 

list.MoveFirst 
Do Until list.EOF 
    WScript.Echo list("date").Value & vbTab & list("name").Value 
    list.MoveNext 
Loop 

list.Sort = "date DESC" 

list.MoveFirst 
Do Until list.EOF 
    WScript.Echo list("date").Value & vbTab & list("name").Value 
    list.MoveNext 
Loop 

list.Close 
+0

Vielen Dank. Ich werde das ausprobieren und Sie wissen lassen! – slayernoah

+0

Arbeitete perfekt! – slayernoah

+0

Dieses Skript gibt die Liste der Dateien zweimal wieder. Einmal in beliebiger Reihenfolge, dann einmal nach Datum sortiert. Erwähnen Sie das nur für den Fall, dass sich jemand fragt, warum die Liste zuerst geortet wurde. –