File durchsuchen, kopieren und danach weiter suchen
Hallo zusammen.
Ich möchte aus Logfiles (teilweise über eine Million Zeilen gross) einen Wert suchen, in eine neue Textdatei kopieren danach weiter suchen.
Der wert sieht z.B so aus: CopiesCompleted="39"
Wobei sich die Zahl dahinter immer ändert. Genau diese Zahl benötige ich aber für eine Verrechnung. Nun meine Frage, ist es möglich das TextFile PCNAME.txt nach dem Wert CopiesCompleted= zu durchsuchen, die Zahl dahinter zu kopieren, danach im Textfile weitersuchen und gleich aufaddieren? So das zum schluss nur noch angezeigt wird CopiesCompleted=5201 oder so in etwa.
Vielen dank.
Gruss
Cookie
Ich möchte aus Logfiles (teilweise über eine Million Zeilen gross) einen Wert suchen, in eine neue Textdatei kopieren danach weiter suchen.
Der wert sieht z.B so aus: CopiesCompleted="39"
Wobei sich die Zahl dahinter immer ändert. Genau diese Zahl benötige ich aber für eine Verrechnung. Nun meine Frage, ist es möglich das TextFile PCNAME.txt nach dem Wert CopiesCompleted= zu durchsuchen, die Zahl dahinter zu kopieren, danach im Textfile weitersuchen und gleich aufaddieren? So das zum schluss nur noch angezeigt wird CopiesCompleted=5201 oder so in etwa.
Vielen dank.
Gruss
Cookie
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 68413
Url: https://administrator.de/contentid/68413
Ausgedruckt am: 21.11.2024 um 20:11 Uhr
4 Kommentare
Neuester Kommentar
per vbSkript solte das in etwa so gehen:
Das aufaddieren fehlt. Aber ich hoffe, es ist immerhin ein Anfang.
[Edit Biber] Formatierung auf < code > gesetzt. [/Edit]
Const szSuch = "text" ' Such test
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objSourceFile = objFSO.OpenTextFile("Source.txt", 1) ' Quelldatei öffnen
Set objDestFile = objFSO.CreateTextFile("Dest.txt", True) ' Zieldatei anlegen / überschreiben
Do Until objSourceFile.AtEndOfStream ' Gesammtes TextDok durchgehen
szNextLine = objSourceFile.Readline ' Zeile aus Quelldatei einlesen
if instr(szNextLine,szSuch) Then ' Wenn Suchtest vorhanden
objDestFile.writeline szNextLine ' Zeile in Zieldatei schreiben
end if
Loop
[Edit Biber] Formatierung auf < code > gesetzt. [/Edit]
... und das (geringfügig ergänzte) Script von Logan000 schreibt auch noch vorweg die gefundenen Zeilen in die Zieldatei:
Grüße
bastla
Const szSuch = "CopiesCompleted=" 'Suchtext
iRelPos = Len(szSuch) + 1 'relative Position (bezogen auf den Beginn des Suchtextes) der gesuchten Zahl
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objSourceFile = objFSO.OpenTextFile("Source.txt", 1) 'Quelldatei öffnen
Set objDestFile = objFSO.CreateTextFile("Dest.txt", True) 'Zieldatei anlegen / überschreiben
lSumme = 0
Do Until objSourceFile.AtEndOfStream 'gesamtes TextDok durchgehen
szNextLine = objSourceFile.Readline 'Zeile aus Quelldatei einlesen
iPos = InStr(szNextLine, szSuch) 'Position des Suchtextes feststellen
If iPos Then ' Wenn Suchtext vorhanden
iStart = iPos + iRelPos 'Starposition der gesuchten Zahl berechnen
iEnd = InStr(iStart, szNextLine, Chr(34)) 'schließendes Anführungszeichen suchen
If iEnd Then 'wenn gefunden, Zeile verwertbar
objDestFile.WriteLine szNextLine 'Zeile in Zieldatei schreiben
'Text ab Startposition bis vor Endposition in Zahl umwandeln und aufsummieren
lSumme = lSumme + CLng(Mid(szNextLine, iStart, iEnd - iStart))
End If
End If
Loop
objDestFile.WriteLine 'Leerzeile in Zieldatei schreiben
objDestFile.Write szSuch & CStr(lSumme) 'Summe in Zieldatei schreiben (ohne abschließende Zeilenschaltung)
objDestFile.Close
Grüße
bastla