Txt Datei ab einer bestimmten Zeile auslesen und in neue txt schreiben bzw. speichern
Hallo,
nach mittlerweile unzähligen Stunden weiß ich nicht mehr weiter und kann auch nicht mehr ;-(
Meine rudimentären VBS Kenntnisse sind erschöpft und trotz schier ewig gefühlter Suche komme ich nicht mehr weiter.
Problem: Eine txt Datei wird durchsucht und falls in der ersten Zeile das aktuelle Datum steht, dann soll das nächste Datum in einer Zeile x die weiter unten steht gesucht werden. Ab dieser Zeile x soll dann der komplette Rest der txt in eine neue txt geschrieben werden. Hier mein bisheriger Code:
Wenn jemand so freundlich wäre und mir behilflich sein könnte wäre dies toll. Ich habe diverse Möglichkeiten getestet, auch solche, die hier im Forum abgebildet sind. Leider bin ich bezüglich dem Syntax nicht sicher und kann daher vielleicht nahe an der Lösung gewesen sein, muss meine Bemühungen aber auf Probieren ausrichten. Daher wäre mir eine Ergänzung von jemand, dem dies einfach fällt, sehr gelegen. Danke im Voraus!
Gruß doschtinator
nach mittlerweile unzähligen Stunden weiß ich nicht mehr weiter und kann auch nicht mehr ;-(
Meine rudimentären VBS Kenntnisse sind erschöpft und trotz schier ewig gefühlter Suche komme ich nicht mehr weiter.
Problem: Eine txt Datei wird durchsucht und falls in der ersten Zeile das aktuelle Datum steht, dann soll das nächste Datum in einer Zeile x die weiter unten steht gesucht werden. Ab dieser Zeile x soll dann der komplette Rest der txt in eine neue txt geschrieben werden. Hier mein bisheriger Code:
Set fso = CreateObject("Scripting.FileSystemObject")
TermDatei = "termine.txt"
TermNeu = "term_neu.txt"
Heute = Date()
' "termine.txt" komplett in Array einlesen ...
TermLines = Split(fso.OpenTextFile(TermDatei).ReadAll, vbCrLf)
' Ausgabedatei erzeugen
Set Ausgabe = fso.CreateTextFile(TermNeu, True)
' erste Zeile mit heutigem Datum vergleichen; geschieht täglich um 23:59 Uhr
If InStr(TermLines(0), Heute) > 0 Then
'gefunden: aktuelles Datum in erster Zeile; Schleife abarbeiten, um zu ermitteln, wo der nächste Eintrag steht
WScript.Echo ("Gefunden!")
For i = 1 To UBound(TermLines)
tmpDat = Left(TermLines(i), 10) 'Die ersten 10 Zeichen einer Zeile auf Einträge mit Ziffern überprüfen
If IsNumeric(tmpDat) = True then
'gefunden: Zeilennummer merken und Schleife verlassen
LineNo = i
Exit For
End If
Next
WScript.Echo (LineNo)
'... gesamten Inhalt ab 'LineNo' in neue txt schreiben
ICH WEIß NICHT MEHR WEITER ...
End If
Wenn jemand so freundlich wäre und mir behilflich sein könnte wäre dies toll. Ich habe diverse Möglichkeiten getestet, auch solche, die hier im Forum abgebildet sind. Leider bin ich bezüglich dem Syntax nicht sicher und kann daher vielleicht nahe an der Lösung gewesen sein, muss meine Bemühungen aber auf Probieren ausrichten. Daher wäre mir eine Ergänzung von jemand, dem dies einfach fällt, sehr gelegen. Danke im Voraus!
Gruß doschtinator
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 176906
Url: https://administrator.de/contentid/176906
Ausgedruckt am: 23.11.2024 um 05:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo doschtinator!
Vorweg: Als "Code" sähe Dein Ansatz zumindest schon mal besser aus ...
Wenn Du doch schon so eine schöne Schleife hast, würde ich die gleich weiter verwenden - ungetestet etwa so:
Sobald einmal der Schalter "Schreiben" auf "True" gesetzt ist, bleibt er das auch - daher wird ab dieser Zeile in die Ausgabedatei geschrieben ...
Grüße
bastla
Vorweg: Als "Code" sähe Dein Ansatz zumindest schon mal besser aus ...
Wenn Du doch schon so eine schöne Schleife hast, würde ich die gleich weiter verwenden - ungetestet etwa so:
Set fso = CreateObject("Scripting.FileSystemObject")
TermDatei = "termine.txt"
TermNeu = "term_neu.txt"
Heute = Date()
' "termine.txt" komplett in Array einlesen ...
TermLines = Split(fso.OpenTextFile(TermDatei).ReadAll, vbCrLf)
' Ausgabedatei erzeugen
Set Ausgabe = fso.CreateTextFile(TermNeu)
' erste Zeile mit heutigem Datum vergleichen; geschieht täglich um 23:59 Uhr
If InStr(TermLines(0), Heute) > 0 Then
'gefunden: aktuelles Datum in erster Zeile; Schleife abarbeiten, um zu ermitteln, wo der nächste Eintrag steht
WScript.Echo ("Gefunden!")
For i = 1 To UBound(TermLines)
tmpDat = Left(TermLines(i), 10) 'Die ersten 10 Zeichen einer Zeile auf Einträge mit Ziffern überprüfen
If IsNumeric(tmpDat) = True Then
Schreiben = True
WScript.Echo i
End If
If Schreiben Then Ausgabe.WriteLine TermLines(i)
Next
End If
Grüße
bastla