Textdatei einlesen und per VBScript umformatieren
Hallo Forummitglieder,
Ich bräuchte einen Ansatz für ein VB Script
IST:
Ich habe eine Datei, die folgenden Inhalt hat
Meldung 1 Nummer
Text1
Text1
Text1
Meldung 2 Nummer
Text2
Text2
Text2
Text2
usw.
SOLL:
Ich möchte folgendes Ausgabeformat
Meldung 1 Nummer Text1 Text1 Text1
Meldung 2 Text2 Text2 Text2
Die Schleife sieht bei mir wie folgt aus
Do Until objEingabe.AtEndOfStream
Zeile = objEingabe.Readline
If Left(Zeile, 7)= "Meldung" And Instr(Zeile, "Nummer") Then
Position = 0
objAusgabe.Writeline(Zeile)
End If
Loop
Ich bekomme die Meldungen mit der Nummer ausgegeben. Ich möchte den in den nächsten Zeilen bestehenden Text mit ausgegeben bekommen.
Kann mir da jemand helfen?.
Vielen Dank für die Hilfe
Ich bräuchte einen Ansatz für ein VB Script
IST:
Ich habe eine Datei, die folgenden Inhalt hat
Meldung 1 Nummer
Text1
Text1
Text1
Meldung 2 Nummer
Text2
Text2
Text2
Text2
usw.
SOLL:
Ich möchte folgendes Ausgabeformat
Meldung 1 Nummer Text1 Text1 Text1
Meldung 2 Text2 Text2 Text2
Die Schleife sieht bei mir wie folgt aus
Do Until objEingabe.AtEndOfStream
Zeile = objEingabe.Readline
If Left(Zeile, 7)= "Meldung" And Instr(Zeile, "Nummer") Then
Position = 0
objAusgabe.Writeline(Zeile)
End If
Loop
Ich bekomme die Meldungen mit der Nummer ausgegeben. Ich möchte den in den nächsten Zeilen bestehenden Text mit ausgegeben bekommen.
Kann mir da jemand helfen?.
Vielen Dank für die Hilfe
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 286380
Url: https://administrator.de/forum/textdatei-einlesen-und-per-vbscript-umformatieren-286380.html
Ausgedruckt am: 12.04.2025 um 06:04 Uhr
12 Kommentare
Neuester Kommentar
Moin,
versuchs mal mit
Code ohne Gewähr, da Kaffeelevel noch zu niedirig .)
lg,
Slainte
versuchs mal mit
Meldung=""
Do Until objEingabe.AtEndOfStream
Zeile = objEingabe.Readline
If Left(Zeile, 7)= "Meldung" And Instr(Zeile, "Nummer") Then
if Meldung<>"" then objAusgabe.Writeline(Zeile)
Meldung=Zeile
else
Meldung=Meldung + " " + Zeile
End If
Loop
Code ohne Gewähr, da Kaffeelevel noch zu niedirig .)
lg,
Slainte
So müsste es auch gehen
Dim Messages : Messages = Split(objEingabe.ReadAll, "Meldung")
Dim NewFileText : NewFileText = "dummydummydummy"
Dim Message
For Each Message In Messages
NewFileText = NewFileText & vbnewline & "Meldung" & Replace(Message, vbNewLine, " ")
'oder statt " " ein vbTab, falls gewünscht
Next
NewFileText = Replace(NewFileText, "dummydummydummy" & vbNewLine, "")
objAusgabe.Write NewFileText
Der Code macht folgendes:
1: Variable Meldiung auf "" setzen
2: Schleife um Textdatei zu durchlaufen
3: Zeile aus Textdatei lesen und in Variable Zeile speichern
4: wenn die linken 7 Buchstaben der Zeile = "Meldung" und das Worter "Nummer" sich in der Zeile befinden, dann
5: Wenn Variable Meldung ungleich "", dann schreibe Zeile in objAusgabe
6: Setze Variable Meldung gleich Variable Zeile
7: sonst
8: Setze Meldung gleich Meldung plus Zeile
9: Ende Wenn
10: Ende Schleife
(ggfs musst du nachdem die Schleife beendet wurde "Meldung", wenn ungleich "" nochmal nach objAusgabe schreiben, da am Schluss ja nicht nochmal eine Zeile mit "Meldung ... Nummer" folgt.
1: Variable Meldiung auf "" setzen
2: Schleife um Textdatei zu durchlaufen
3: Zeile aus Textdatei lesen und in Variable Zeile speichern
4: wenn die linken 7 Buchstaben der Zeile = "Meldung" und das Worter "Nummer" sich in der Zeile befinden, dann
5: Wenn Variable Meldung ungleich "", dann schreibe Zeile in objAusgabe
6: Setze Variable Meldung gleich Variable Zeile
7: sonst
8: Setze Meldung gleich Meldung plus Zeile
9: Ende Wenn
10: Ende Schleife
(ggfs musst du nachdem die Schleife beendet wurde "Meldung", wenn ungleich "" nochmal nach objAusgabe schreiben, da am Schluss ja nicht nochmal eine Zeile mit "Meldung ... Nummer" folgt.
Wenn Du es ganz "straff" habe willst, dann ginge es auch so.
Hier könnte sogar OutFile = InFile sein, weil in Zeile 4 die Eingabe-Datei sofort wieder geschlossen wird. Dazu müsste man in Zeile 11 "OutFile" mit "InFile" ersetzen.
Const InFile = "pfad-zur-Eingabe-datei"
Const OutFile = "pfad-zur-Ausgabegabe-datei"
Dim FSO : Set FSO = CreateObject("Scripting.FileSystemObject")
Dim Messages : Messages = Split(FSO.OpenTextFile(InFile).ReadAll, "Meldung")
Dim NewFileText : NewFileText = ""
Dim Message
For Each Message In Messages
NewFileText = NewFileText & "Meldung" & Replace(Message, vbNewLine, " ") & vbnewline
'oder statt " " ein vbTab, falls gewünscht
Next
FSO.CreateTextFile(OutFile, True).Write NewFileText
Set FSO = Nothing
Hier könnte sogar OutFile = InFile sein, weil in Zeile 4 die Eingabe-Datei sofort wieder geschlossen wird. Dazu müsste man in Zeile 11 "OutFile" mit "InFile" ersetzen.