Textdatei zeilenweise nach Datum sortieren
Hallo Gemeinde,
mehrere umfangreiche Textdateien, in denen zeilenweise wichtige Daten und Termine eingetragen sind, sollen zeilenweise nach dem Datum sortiert und in eine neue Texdatei geschrieben werden.
Das besondere an der Datumssortierung ist die sogenannten Chroniksortierung, d.h. zuerst nach dem Monat (Stelle 4-5), dann nach dem Wochentag (1-2) und zuletzt nach dem Jahr (Stellen 7-10).
Das Datum im deutschen Format (TT.MM.JJJJ - mit führenden Nullen) steht immer an erster Stelle, nach einem Leerzeichen folgt der eigentliche Text.
Beim Googeln habe ich zwar einige Lösungen in PHP, Perl oder für Linux gesehen, ich hätte aber gerne ein Script in VBS. Ich danke im voraus.
mehrere umfangreiche Textdateien, in denen zeilenweise wichtige Daten und Termine eingetragen sind, sollen zeilenweise nach dem Datum sortiert und in eine neue Texdatei geschrieben werden.
Das besondere an der Datumssortierung ist die sogenannten Chroniksortierung, d.h. zuerst nach dem Monat (Stelle 4-5), dann nach dem Wochentag (1-2) und zuletzt nach dem Jahr (Stellen 7-10).
Das Datum im deutschen Format (TT.MM.JJJJ - mit führenden Nullen) steht immer an erster Stelle, nach einem Leerzeichen folgt der eigentliche Text.
Beim Googeln habe ich zwar einige Lösungen in PHP, Perl oder für Linux gesehen, ich hätte aber gerne ein Script in VBS. Ich danke im voraus.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 257056
Url: https://administrator.de/forum/textdatei-zeilenweise-nach-datum-sortieren-257056.html
Ausgedruckt am: 06.01.2025 um 23:01 Uhr
2 Kommentare
Neuester Kommentar
Hallo Gurkenhobel,
probiers mal hiermit:
Grüße Uwe
-edit- kleinere Optimierungen
probiers mal hiermit:
'Konstanten
Const FILE_IN = "C:\termine.txt"
Const FILE_OUT = "C:\termine_sortiert.txt"
Const AD_LONGCHAR = 201
Const AD_INT = 3
'Variablen
Dim strNewContent,arrContent,fso,objList,line,strDate,f_out
'Objekte
Set objList = CreateObject("ADOR.Recordset")
Set fso = CreateObject("Scripting.Filesystemobject")
'Spalten des Recordsets erstellen
objList.Fields.Append "DD", AD_INT
objList.Fields.Append "MM", AD_INT
objList.Fields.Append "YYYY", AD_INT
objList.Fields.Append "Text", AD_LONGCHAR,1
objList.Open
'Datei in Array einlesen
arrContent = Split(fso.OpenTextFile(FILE_IN,1).ReadAll(),vbNewLine)
'Für jede Zeile im Array einen Eintrag im Recordset hinzufügen
For Each line In arrContent
If line <> "" Then
objList.AddNew
objList("DD").Value = Left(line,2)
objList("MM").Value = Mid(line,4,2)
objList("YYYY").Value = Mid(line,7,4)
objList("Text").Value = line
objList.Update
End If
Next
'Recordset sortieren
objList.Sort = "MM ASC,DD ASC,YYYY ASC"
'Recordset in Datei ausgeben
Set f_out = fso.OpenTextFile(FILE_OUT,2,True)
objList.MoveFirst
While Not objList.EOF
f_out.WriteLine objList("Text").Value
objList.MoveNext
Wend
f_out.Close
MsgBox "Finished"
Set fso = Nothing
Set objList = Nothing
-edit- kleinere Optimierungen