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-Key: 110354

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

Printed on: April 19, 2024 at 19:04 o'clock

Member: bastla
bastla Mar 02, 2009 at 18:19:52 (UTC)
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
Member: deeboo
deeboo Mar 02, 2009, updated at Oct 18, 2012 at 16:37:48 (UTC)
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
Member: bastla
bastla Mar 03, 2009 at 06:09:03 (UTC)
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
Member: deeboo
deeboo Mar 03, 2009 at 08:13:24 (UTC)
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.
Member: deeboo
deeboo Mar 05, 2009 at 09:00:18 (UTC)
Goto Top
Danke Euch noch einmal. Hat alles wunderbar geklappt...

lg
deeboo