VbScript: Textdatei nach Suchbegriff nur die nächsten drei Zeilen ausgeben
Moin, Moin,
ich bin neu hier im Forum und auch Neuling was Vbscript betrifft.
Vielleicht kann mir ja jemand helfen?
Folgendes Problem, in einer Textdatei stehen an unterschiedlichen
Positionen die Suchbegriffe Vorname: Nachname: Geb.-Datum: und
Geburts-Ort:
Dummerweise stehen die gesuchten Inhalte nicht hinter dem Suchbegriff,
sondern in den folgenden drei Zeilen (incl. Leerzeilen), sieht wie folgt aus:
Text-Text-Text-Text-Text-Text
Text-Text-Text-Text-Text-Text
Vorname:
(Leerzeile)
Max (Inhalt soll ausgelesen werden)
(Leerzeile)
Text-Text-Text-Text-Text-Text
Nachname:
(Leerzeile)
Muster (Inhalt soll ausgelesen werden)
(Leerzeile)
Text-Text-Text-Text-Text-Text
Text-Text-Text-Text-Text-Text
Text-Text-Text-Text-Text-Text
Geb.-Datum:
u.s.w.
Ich beiße mir seit Tagen die Zähne aus und komme nicht weiter!
Wenn möglich ein Lösungsansatz ohne REG EX, da sonst die
Verwirrung complete;(
freundliche Grüße an alle die es lesen
Host-ess
ich bin neu hier im Forum und auch Neuling was Vbscript betrifft.
Vielleicht kann mir ja jemand helfen?
Folgendes Problem, in einer Textdatei stehen an unterschiedlichen
Positionen die Suchbegriffe Vorname: Nachname: Geb.-Datum: und
Geburts-Ort:
Dummerweise stehen die gesuchten Inhalte nicht hinter dem Suchbegriff,
sondern in den folgenden drei Zeilen (incl. Leerzeilen), sieht wie folgt aus:
Text-Text-Text-Text-Text-Text
Text-Text-Text-Text-Text-Text
Vorname:
(Leerzeile)
Max (Inhalt soll ausgelesen werden)
(Leerzeile)
Text-Text-Text-Text-Text-Text
Nachname:
(Leerzeile)
Muster (Inhalt soll ausgelesen werden)
(Leerzeile)
Text-Text-Text-Text-Text-Text
Text-Text-Text-Text-Text-Text
Text-Text-Text-Text-Text-Text
Geb.-Datum:
u.s.w.
Ich beiße mir seit Tagen die Zähne aus und komme nicht weiter!
Wenn möglich ein Lösungsansatz ohne REG EX, da sonst die
Verwirrung complete;(
freundliche Grüße an alle die es lesen
Host-ess
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 354408
Url: https://administrator.de/forum/vbscript-textdatei-nach-suchbegriff-nur-die-naechsten-drei-zeilen-ausgeben-354408.html
Ausgedruckt am: 22.04.2025 um 03:04 Uhr
10 Kommentare
Neuester Kommentar
Hi,
es wäre hilfreich, wenn Du uns das Stück Code mit Deinen Zähnen drin
hier mal vorstellen würdest.
Ansonsten in etwa so:
E.
es wäre hilfreich, wenn Du uns das Stück Code mit Deinen Zähnen drin
Ansonsten in etwa so:
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim Line
Dim Vorname, Nachname, GebDatum
With FSO.OpenTextFile("Pfad_zur_Datei")
While Not .EndOfStream
Line = .ReadLine
If Left(Line, 8 ) = "Vorname:" Then
.ReadLine 'Leerzeile überspringen
Vorname = Trim(.ReadLine)
ElseIf Left(Line, 9 ) = "Nachname:" Then
.ReadLine 'Leerzeile überspringen
Nachname = Trim(.ReadLine)
ElseIf Left(Line, 10 ) = "Geb.-Datum:" Then
.ReadLine 'Leerzeile überspringen
GebDatum = Trim(.ReadLine)
End If
Wend
End With
E.
Deshalb noch eine Anschlussfrage, kann ich zwischen
zwei unterschiedlichen Suchbegriffen auslesen, in meinem
Fall zwischen Geburts-Ort: und Land: ?
"kann ich zwischen zwei unterschiedlichen Suchbegriffen auslesen"zwei unterschiedlichen Suchbegriffen auslesen, in meinem
Fall zwischen Geburts-Ort: und Land: ?
Diese Frage ist unverständlich bzw. sicher nicht das, was Du fragen willst.
So gefragt kann ich bloß antworten: Ja , Du kannst. Aber das wird Dir nicht helfen.
da die Leerzeilen nach Geburtsort immer wieder variieren.
Wie jetzt? Rote, blaue und grüne Leerzeilen, oder was?Oder etwa die Anzahl der Leerzeilen?
Wenn Du es nicht packst, eine Frage korrekt auszuformulieren, dann wird das bei Dir nie was mit dem Programmieren!
ElseIf Left(Line, 12 ) = "Geburts-Ort:" And Left(Line, 5 ) = "Land:" Then
Wenn, dann kannst Du hier nur "oder" gemeint haben.
GebOrt & Land = Trim(FileIn.ReadLine)
"And" ein logischer Operator.
Beide sind nicht geeignet, um auszudrücken: A und B ergeben sich aus C. Hier muss man explizit sagen: A ergibt sich aus C. Und: B ergibt sich aus C.
Können da je Datei mehrere Datensätze stehen oder je Datei immer nur genau einer?
Egal wie:
Vor jedem Durchlauf (nächste Datei oder nächster Datensatz pro Datei) die Variablen auf einen definierten Start-Wert stellen. Also Leerstring, 0 oder Nothing.
Also in etwa:
'Start-Werte
Vorname = ""
Nachname = ""
GebDatum = ""
GebOrt = ""
Land = ""
....
'Wenn Zeile mit "Geburts-Ort" beginnt und wir noch keinen Geburtsort eingelesen haben (GebOrt = "")
ElseIf Left(Line, 12 ) = "Geburts-Ort:" And GebOrt = "" Then
FileIn.ReadLine 'Leerzeile überspringen
GebOrt = Trim(FileIn.ReadLine)
FileOut.WriteLine GebOrt
'Wenn Zeile mit "Land" beginnt und wir noch kein Land eingelesen haben (Land = "")
ElseIf Left(Line,5 ) = "Land:" And Land = "" Then
FileIn.ReadLine 'Leerzeile überspringen
Land = Trim(FileIn.ReadLine)
FileOut.WriteLine GebOrt
....