Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Textdatei zeilenweise nach Datum sortieren

Mitglied: Gurkenhobel

Gurkenhobel (Level 1) - Jetzt verbinden

08.12.2014, aktualisiert 17:56 Uhr, 2144 Aufrufe, 2 Kommentare, 1 Danke

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.
Mitglied: colinardo
LÖSUNG 08.12.2014, aktualisiert um 18:28 Uhr
Hallo Gurkenhobel,
probiers mal hiermit:
01.
'Konstanten 
02.
Const FILE_IN = "C:\termine.txt" 
03.
Const FILE_OUT = "C:\termine_sortiert.txt"  
04.
Const AD_LONGCHAR = 201 
05.
Const AD_INT = 3 
06.
'Variablen 
07.
Dim strNewContent,arrContent,fso,objList,line,strDate,f_out 
08.
'Objekte 
09.
Set objList = CreateObject("ADOR.Recordset") 
10.
Set fso = CreateObject("Scripting.Filesystemobject") 
11.
'Spalten des Recordsets erstellen 
12.
objList.Fields.Append "DD", AD_INT 
13.
objList.Fields.Append "MM", AD_INT 
14.
objList.Fields.Append "YYYY", AD_INT 
15.
objList.Fields.Append "Text", AD_LONGCHAR,1 
16.
objList.Open 
17.
'Datei in Array einlesen 
18.
arrContent = Split(fso.OpenTextFile(FILE_IN,1).ReadAll(),vbNewLine) 
19.
'Für jede Zeile im Array einen Eintrag im Recordset hinzufügen 
20.
For Each line In arrContent 
21.
	If line <> "" Then 
22.
		objList.AddNew 
23.
		objList("DD").Value = Left(line,2) 
24.
		objList("MM").Value = Mid(line,4,2) 
25.
		objList("YYYY").Value = Mid(line,7,4) 
26.
		objList("Text").Value = line 
27.
		objList.Update 
28.
	End If 
29.
Next 
30.
'Recordset sortieren 
31.
objList.Sort = "MM ASC,DD ASC,YYYY ASC" 
32.
 
33.
'Recordset in Datei ausgeben 
34.
Set f_out = fso.OpenTextFile(FILE_OUT,2,True) 
35.
objList.MoveFirst 
36.
While Not objList.EOF 
37.
	f_out.WriteLine objList("Text").Value 
38.
	objList.MoveNext 
39.
Wend 
40.
f_out.Close 
41.
 
42.
MsgBox "Finished" 
43.
 
44.
Set fso = Nothing 
45.
Set objList = Nothing
Grüße Uwe

-edit- kleinere Optimierungen
Bitte warten ..
Mitglied: Gurkenhobel
08.12.2014, aktualisiert um 19:05 Uhr
Hallo Uwe,

das ist genau das, was ich wollte - kurz und schmerzlos. Besonders freut es mich natürlich, daß auch längere Zeilen mit meh als 256 Zeichen nicht abgeschnitten werden.
Die Zeile 13
objList.Fields.Append "Text", 200,256 
hat da wohl keinen Einfluss...

Vielen Dank und beste Grüße

Micha
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Textdatei zeilenweise in Variable schreiben

gelöst Frage von goodbytesBatch & Shell20 Kommentare

Hallo, mit einer Batch möchte ich mehrere Laufwerke mappen, abhängig vom Usernamen. Klar könnte ich auch für jeden User ...

Batch & Shell

Batch: Textdatei Zeilenweise auslesen

gelöst Frage von CreatorXBatch & Shell2 Kommentare

Hallo, ich weiß, zu dem Thema gibt es schon unzählige Threads. Ich hab auch einiges dazu gefunden und trotzdem ...

Java

Textdatei in Array speichern (zeilenweise)

gelöst Frage von BruchsalJava1 Kommentar

Hallo, ich möchte aus einer Textdatei zeilenweise den Inhlat in ein String Array speicher. Ist das nur mit einem ...

Windows Server

Windows Updates nach Datum sortieren

Frage von RG2525Windows Server2 Kommentare

Hallo, Ich muss auf einem Windows Server 2008 R2 ca. 130 ausstehende Updates installieren. Alle Updates auf einmal zu ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 21 StundenWindows 104 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 1 TagAdministrator.de Feedback18 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 1 TagHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 2 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Windows Netzwerk
WSUS4 und Windows 10 Updates automatisch installieren
Frage von sammy65Windows Netzwerk15 Kommentare

Hallo miteinander, ich habe mit einen neuen WSUS Server aufgesetzt Server 2016 darauf einen aktuellen WSUS. Grund, wir stellen ...

Speicherkarten
Vergessliche USB-Sticks?
Frage von hanheikSpeicherkarten14 Kommentare

Ich habe in den letzten Tagen 500 USB-Sticks mit Bilddateien bespielt. Obwohl ich die Dateien mit größter Sorgfalt kopiert ...

Windows Netzwerk
Backup über WAN
Frage von petereWindows Netzwerk11 Kommentare

Hallo, ich muss aus einem entfernten WAN (synchrone 1Gbit) Daten sichern. Dabei handelt es sich sowohl um wenige große ...

Hyper-V
Hyper-V mit altem XEON-Server. Was ist falsch?
Frage von LollipopHyper-V11 Kommentare

Hallo Bin etwas frustriert. Kleinbetrieb, ca. 15 PC's, 2 Stk. Server mit einigen virtuellen PC's für Fernwartung, VaultServer für ...