deeboo
Goto Top

Nach Erstellungsdatum Und Dateinamen sortieren

Da der anderen Beitrag als Gelöst markiert ist, mach ich hier einen Neuen auf. face-smile

Bastla hatte mir einen schönen Code geliefert.

Problemstellung:
Viele viele Dateien mit folgendem Format:
File1.999
File1.998
File1.899

Diese sollen via VBS sortiert werden.

For Each DateiArt In DateiArten
    D = ""  
    M = "000"  
    For Each File In Folder.Files
        If LCase(fso.GetBaseName(File.Name)) = DateiArt Then
            Ext = fso.GetExtensionName(File.Name)


    		If  Ext > M Then
                D = File.Name
                M = Ext
            End If
        End If
    Next
    If D <> "" Then  
        Res = Res & vbCrLF & D
    Else
        Res = Res & vbCrLF & "Es wurde keine """ & DateiArt & """-Datei gefunden!"  
    End If
Next

Klappt auch wunderbar.
Nur wird ja jetzt immer die "höchste" Datei ausgegeben, was ja im Grunde richtig ist.
Nur hat sich meine Problemstellung in so weit geändert, das jetzt ein "Versionssprung" bevorsteht.
d.h.
es kommt dann zu:
file1.001
file1.999
file1.998

Jetzt gibt er mir File1.999 als aktuelles File aus.
Ich müsste jetzt noch den Parameter objFile.DateCreated mit integrieren.
Bloß wo?
bei Ext = code..... klappts nicht.

Content-ID: 110354

Url: https://administrator.de/forum/nach-erstellungsdatum-und-dateinamen-sortieren-110354.html

Ausgedruckt am: 23.12.2024 um 06:12 Uhr

bastla
bastla 02.03.2009 um 19:19:52 Uhr
Goto Top
Hallo deeboo!

Das sähe dann so aus (unter der Annahme, dass es genügen müsste, nach dem Erstellungsdatum - beinhaltet ja auch die Uhrzeit - zu sortieren):
For Each DateiArt In DateiArten
    D = ""  
    M = 0
    For Each File In Folder.Files
        If LCase(fso.GetBaseName(File.Name)) = DateiArt Then
    	    If  File.DateCreated > M Then
                D = File.Name
                M = File.DateCreated
            End If
        End If
    Next
    If D <> "" Then  
        Res = Res & vbCrLF & D
    Else
        Res = Res & vbCrLF & "Es wurde keine """ & DateiArt & """-Datei gefunden!"  
    End If
Next
[Edit]
Sollte übrigens tatsächlich gewünscht sein, alle an einem Tag erstellten Dateien nach dem Dateityp zu ordnen, dann so:
For Each DateiArt In DateiArten
    D = ""  
    M = ""  
    For Each File In Folder.Files
        If LCase(fso.GetBaseName(File.Name)) = DateiArt Then
            DCr = File.DateCreated
            Dat = Mid(DCr,7,4) & Mid(DCr,3,2) & Left(DCr,2) 'erzeugt Datum im Format JJJJMMTT  
            Ext = fso.GetExtensionName(File.Name)
            Kriterium = Dat & Ext
            If  Kriterium > M Then
                D = File.Name
                M = Kriterium
            End If
        End If
    Next
    If D <> "" Then  
        Res = Res & vbCrLF & D
    Else
        Res = Res & vbCrLF & "Es wurde keine """ & DateiArt & """-Datei gefunden!"  
    End If
Next
In diesem Fall wird nur das Erstellungsdatum (nicht auch die Uhrzeit) berücksichtigt.
[/Edit]
[OT]
Zwei Anmerkungen:
  • Einen als "gelöst" gekennzeichenten Beitrag kannst Du selbst (solange er nicht geschlossen ist) wieder auf "nicht gelöst" setzen.
  • Wenn Du nur das Bruchstück eines Codes postest, wird es für Hilfswillige unnötig aufwändig, die fehlenden Teile (für einen Test) selbst hinzuzufügen - auch wenn es, wie hier, nur um ein Array ("DateiArten") und ein Objekt ("Folder") geht. Zumindest ein Link auf den vorherigen Thread wäre angebracht gewesen ...
[/OT]

Grüße
bastla
deeboo
deeboo 03.03.2009, aktualisiert am 18.10.2012 um 18:37:48 Uhr
Goto Top
Hallo bastla.

Sorry.
Gelobe Besserung.
Werde das morgen mal testen.
...
If  File.DateCreated > M Then
...

Hatte ich auch schon probiert. Aber scheinbar nicht richtig.
Werd morgen nochmal schauen. Jetzt ist Feierabend. ;)

P.S. Offtopic konnte zwar im gelösten posten. Dennoch war er als gelöst markiert. Und da schaut ,glaub ich, keiner so schnell wieder rein.
Aber zum Bezug für diejenigen, die sich auch einmal auf der Suche nach dieser oder einer ähnlichen Problemlösung hierher verirren.
Dateien speziell sortieren VBS

Bis morgen.
lg
deeboo
bastla
bastla 03.03.2009 um 07:09:03 Uhr
Goto Top
Hallo deeboo!

Die Anmerkung hinsichtlich "gelöst" war nicht als Aufforderung, sondern tatsächlich nur als Hinweis gedacht - die Einschätzung, ob eine solche Statusänderung zeitnah genug wäre, musst(est) Du natürlich selbst treffen ...
Zum Vergleich von "DateCreated" mit einer Variablen (hier: "M"): Da Datums- und Zeitwerte ja nur besonders interpretierte Zahlen darstellen, benötigst Du eine numerische Variable (daher oben M=0).

Grüße
bastla
deeboo
deeboo 03.03.2009 um 09:13:24 Uhr
Goto Top
War schon auf dem richtigen Weg. Hätte nur alles ändern müssen, nicht nur den einen Punkt. Siehe mein letzter Post.
Aber irgendwie klappt noch nicht so richtig. Er nimmt immer die File.002. Sehe aber auch grad den Fehler nicht.

Ich habe mir in meinen Ordner 3 Bsp. Dateien gelegt.

test.006 (Date modified: 3/2/2009 3:45 PM)
test.002 (Date modified: 3/3/2009 9:45 AM)
test.956 (Date modified: 3/1/2009 2:34 PM)

Und währendessen ich diesen Post schreibe, fällt mir auf, ich könnts ja mal mit: "DateLastModified" versuchen. *lol* Und siehe da.....

Werds mal weiter testen, bevor ich den Beitrag schliesse.
thx und einen guten Start in den Dienstag.
deeboo
deeboo 05.03.2009 um 10:00:18 Uhr
Goto Top
Danke Euch noch einmal. Hat alles wunderbar geklappt...

lg
deeboo