Werte aus txt Datei auslesen in jeder Zeile
Hallo zusammen,
ich bin recht unbewandert mit vbs-Scripten.
Ich hab ein Log wo Gruppenänderungen reingeschrieben werden.
Format:
Das ist ansich das Log von Windows-Security wenn nen User hinzugefügt oder gelöscht wird.
Darauf brauch ich aber nur vier Werte die ich dann in ne mysql packen möchte.
Datum+Uhrzeit (im Beispiel 2012-08-27)
Kontoname (im Beispiel: USER1)
Kontoname (im Beispiel: CN=OUNAME,OU=UEBEROU,OU=Gruppen,OU=bla,DC=DOMAENE,DC=local)
Gruppenname (im Beispiel: GRUPPENNAME)
Das Log hat je nach der Anzahl von Änderungen mal mehr und mal weniger Einträge.
Die Datum+Uhrzeit Einträge sind immer 19 Zeichen lang. Das sind die ersten 19 Zeichen pro Zeile. Danach kommt aber erstmal der unnötige Text bis zweimal die gleichen Kontoname: Einträge kommen die mich interessieren.
Ist das überhaupt machbar mit nem vbs-Script?
Als Test wollte ich die vier Werte komma(Symicolon)getrennt in ne neue Datei schreiben.
Kann/Mag mir da jemand bei helfen?
Vielen Dank!
Pat
[Edit Biber] Nachgecodetagged [/Edit]
ich bin recht unbewandert mit vbs-Scripten.
Ich hab ein Log wo Gruppenänderungen reingeschrieben werden.
Format:
2012-08-27 08:52:37 Ein Mitglied einer sicherheitsaktivierten lokalen Gruppe wurde hinzugefügt. Antragsteller: Sicherheits-ID: S-1-5-21-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxx Kontoname: USER1 Kontodomäne: DOMAENE Anmelde-ID: 0x9c0xxx2 Mitglied: Sicherheits-ID: S-1-5-21-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxx Kontoname: CN=OUNAME,OU=UEBEROU,OU=Gruppen,OU=bla,DC=DOMAENE,DC=local Gruppe: Sicherheits-ID: S-1-5-21-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxx Gruppenname: GRUPPENNAME Gruppendomäne: DOMAENE Weitere Informationen: Berechtigungen: -
Darauf brauch ich aber nur vier Werte die ich dann in ne mysql packen möchte.
Datum+Uhrzeit (im Beispiel 2012-08-27)
Kontoname (im Beispiel: USER1)
Kontoname (im Beispiel: CN=OUNAME,OU=UEBEROU,OU=Gruppen,OU=bla,DC=DOMAENE,DC=local)
Gruppenname (im Beispiel: GRUPPENNAME)
Das Log hat je nach der Anzahl von Änderungen mal mehr und mal weniger Einträge.
Die Datum+Uhrzeit Einträge sind immer 19 Zeichen lang. Das sind die ersten 19 Zeichen pro Zeile. Danach kommt aber erstmal der unnötige Text bis zweimal die gleichen Kontoname: Einträge kommen die mich interessieren.
Ist das überhaupt machbar mit nem vbs-Script?
Als Test wollte ich die vier Werte komma(Symicolon)getrennt in ne neue Datei schreiben.
Kann/Mag mir da jemand bei helfen?
Vielen Dank!
Pat
[Edit Biber] Nachgecodetagged [/Edit]
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 190332
Url: https://administrator.de/forum/werte-aus-txt-datei-auslesen-in-jeder-zeile-190332.html
Ausgedruckt am: 25.12.2024 um 02:12 Uhr
7 Kommentare
Neuester Kommentar
Hallo BBfreak!
Stellt Dein "Format"-Beispiel (BTW: Formatiere das bitte ebenfalls als "Code"!) nur eine einzige Zeile dar, und gibt es in der "report.txt" mehrere solcher Zeilen?
[Edit] Ich nehm's mal an - dann etwa so:
Hier solltest Du vielleicht noch vorbeischauen: Microsoft Beefs Up VBScript with Regular Expressions, oder auch da: Reguläre Ausdrücke - und einen hab ich noch: Regular Expressions in VBScript
[/Edit]
Grüße
bastla
Stellt Dein "Format"-Beispiel (BTW: Formatiere das bitte ebenfalls als "Code"!) nur eine einzige Zeile dar, und gibt es in der "report.txt" mehrere solcher Zeilen?
[Edit] Ich nehm's mal an - dann etwa so:
Set oFSO = CreateObject("Scripting.FileSystemObject")
sInFile = "D:\report.txt"
sOutFile = "D:\data.csv"
sDelim = ";"
If Not oFSO.FileExists(sInFile) Then
WScript.Echo "ACHTUNG! Datei nicht vorhanden!"
End If
Lines = Split(oFSO.OpenTextFile(sInFile).ReadAll, vbNewLine) 'alle Zeilen in Array Lines einlesen
Set rE = New RegExp
For Each Line In Lines
sDatum = Left(Line, 19)
rE.Pattern = "Kontoname: (\S+) Kontodomäne"
sKontoname = rE.Execute(Line)(0).SubMatches(0)
rE.Pattern = "Kontoname: (\S+) Gruppe:"
sLDAPPfad = rE.Execute(Line)(0).SubMatches(0)
rE.Pattern = "Gruppenname: (\S+) Gruppendomäne:"
sGruppe = rE.Execute(Line)(0).SubMatches(0)
LinesOut = LinesOut & vbNewline & sDatum & sDelim & sKontoname &sDelim & sLDAPPfad & sDelim & sGruppe
Next
oFSO.CreateTextFile(sOutFile).Write Mid(LinesOut, 3) 'wegen der Zeilenschaltung am Anfang erst ab Char 3 schreiben
[/Edit]
Grüße
bastla
Hallo BBfreak!
Ich habe nur mit der einen oben von Dir geposteten Zeile getestet - das aber erfolgreich (und da die Zeile 17 nicht wirklich anderes macht als die Zeile 20 wäre im Fall des Falles der Fehler eigentlich schon dort zu erwarten) ...
Kannst Du vielleicht Deine Testdaten (als "Code" formatiert) posten?
Grüße
bastla
Ich habe nur mit der einen oben von Dir geposteten Zeile getestet - das aber erfolgreich (und da die Zeile 17 nicht wirklich anderes macht als die Zeile 20 wäre im Fall des Falles der Fehler eigentlich schon dort zu erwarten) ...
Kannst Du vielleicht Deine Testdaten (als "Code" formatiert) posten?
Grüße
bastla
Hallo BBfreak!
Für "hinzugefügt" / "entfernt" kannst Du (soferne nur eines davon enthalten sein kann) so vorgehen:
Grüße
bastla
WEnn ich das Freizeichen zwischen Vor und Nachname wegnehme, klappt die Abfrage wieder.
Du meinst damit vermutlich ein Leerzeichen - dann musst Du nur die Zeile 19 anpassen, etwa:rE.Pattern = "Kontoname: \S+.*Kontoname: (.+) Gruppe:"
If InStr(Line, "hinzugefügt") >0 Then Aktion = "hinzugefügt"
If InStr(Line, "entfernt") >0 Then Aktion = "entfernt"
bastla