doschtinator
Goto Top

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:

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

Content-Key: 176906

Url: https://administrator.de/contentid/176906

Printed on: April 20, 2024 at 02:04 o'clock

Member: bastla
Solution bastla Nov 27, 2011, updated at Jan 08, 2014 at 22:42:02 (UTC)
Goto Top
Hallo doschtinator!

Vorweg: Als "Code" sähe Dein Ansatz zumindest schon mal besser aus ... face-wink
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
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
Member: doschtinator
doschtinator Nov 27, 2011 at 22:25:24 (UTC)
Goto Top
Hallo bastla,

sorry wegen der Formatierung! Werde es mir merken.

Tausen Dank für die Ergänzung bzw. Korrektur! So scheint es wie gewünscht zu funktionieren.

SUPER!

Gruß doschtinator