Dieser Beitrag ist schon älter. Bitte vergewissern Sie sich, dass die Rahmenbedingungen oder der enthaltene Lösungsvorschlag noch dem aktuellen Stand der Technik entspricht.

.txt in jeder zeile auf zeichensatz überprüfen (ändert sich)

Mitglied: Silentuser

Hallo es geht um folgenen Beitrag: https://www.administrator.de/index.php?content=34e67b04934b68b8de4c96020 ...

Guten Morgen,

wie gesagt es geht um diesen Beitrag hier: https://www.administrator.de/forum/eventlog.txt-filtern-anhand-von-ziffe ...
(sollte man lesen damit man vesteht was ich meine)




Das ganze funktioniert alles einwandfrei, leider habe ich bei meiner fragestellung ganz fergessen das sich ja das Datum verändert und somit auch der Zeichensatz.

D.h.


wenn das Datum auf:

Ihr versteht was ich meine?

Das ganze ist ja ein Script und soll beim Kunden installiert werden, und da währe es natürlich hilfreich nicht alle 10 Tage jeden monat und alle 10 monate jedes Jahr das Script umschreiben zu müssen...

Ich weiß das ganze is nich so einfach, z.Z wird die log Datei ja durch TAB-Space getrennt, das einzige was ich noch machen könnte ist die Informationen der Zeilen nicht durch TAB-Space sonder durch komma zu trennen, aber da bringt das mit dem Zeichensatz auch nich wirklich viel....

das sähe dann so aus:

(Die 4 nach der Uhrzeit soll überprüft werden)


Hier nochmal dei .bat die die .txt auf den 19ten Zeichensatz überprüft



Hat jemand eine Idee was man da machen kann?
z.B. den Zeichensatz(die länge) vom Datum überprüfen und dem entsprechend den Zeichensatz in der .bat zu editieren.

Content-Key: 66343

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

Ausgedruckt am: 05.12.2021 um 10:12 Uhr

Mitglied: Biber
Biber 16.08.2007 um 10:55:34 Uhr
Goto Top
Moin Silentuser,

in diesem Fall ist es ja nicht nicht sinnvoll, die einzelne Textzeile als Ganzes mit einer fixen Tabellenstruktur (alle "Spalten" gleich lang aufzufassen.
Mit der Batch FOR /F-Anweisung kannst Du die Zeile zerlegen.

Beispiel: Ersetze den Block :ProcessLine wie folgt:

Damiz wird die jeweilige Zeile (kommt an als Parameter %1) zerlegt in Tokens ("Satzteile"), deren Delimiter jeweils ein Komma ist.
Das 1. Token %%i entspricht dem Datum,
das 2. Token %%j entspricht der Uhrzeit,
das 3. Token %%k entspricht dem Errorcode,
das 4. Token %%l entspricht dem Rest der Zeile,

Im obigen Beispiel lasse ich alles mit einem 3.Token/Errorcode GEQ (größer gleich) Deinem festgelegten %Code% anzeigen.
So kannst Du Dir aussuchen, was und wie Du in die Error-Logdatei schreiben willst.

Grüße
Biber
Mitglied: Silentuser
Silentuser 16.08.2007 um 11:38:05 Uhr
Goto Top
Vielen Dank, so sollte es funktionieren

Leider noch nich ganz :-) face-smile


Hier noch mal der angepasste Quellcode


also sowie es dort steht schreibt er mir nur die ersten 10 zeilen der "app.txt" in die "error-app.txt" ohne sie zu filtern als Error code bringt er mir die 4 (welche auch dem Error Code in der app.txt in den ersten 10 Zeilen entspricht.

so sieht das ergebniss aus:



komm nich dahinter warum er nich nach der 1 filtert und warum er nur die ersten 10 zeilen nimmt (in den ersten 10 zeilen kommt aber auch nich der error-code "1" vor !?)

Aber vielen Dank ich (wir) sind schon auf dem richtigen weg :-) face-smile
Mitglied: Biber
Biber 17.08.2007 um 01:01:35 Uhr
Goto Top
Tja, Silentuser,

sehe mit bloßem Auge den Denk- oder Tippfehler auch nicht.
Aber ich habe bei unserem WebMassa mal darum gebeten, hier weitere 35cm Platz unterhalb dieses Kommentars eingeräumt zu bekommen.
Geht klar! ;-) face-wink

Dann poste doch einfach mal die ersten drei dutzend Zeilen der Logdatei, dann kommen wir vielleicht dem Bug auf die Spur...

Grüße
Biber
Mitglied: Silentuser
Silentuser 17.08.2007 um 08:13:04 Uhr
Goto Top
na das mach ich doch klatt :-) face-smile

nochmal die "Filter-ERROR-APP.bat"


die ganze "app.txt":


und so schaut das ergebniss aus ;-) face-wink (Error-app.txt)


fänds super wenn du nochmal nachschauen könntest was noch fehlt oder wo der fehler ist, bin auch schon die ganze zeit am rum probieren aber hab leider fast keine ahnung vom batchen :-) face-smile

Gruß

der stille Benutzer
Mitglied: Biber
Biber 17.08.2007 um 12:45:30 Uhr
Goto Top
Moin Silentuser,

okay, das Problem liegt darin, das auch die jeweilige Errorlog-Zeile ihrerseits Anführungszeichen (") enthalten kann.
Zum Beispiel den Text Der Dienst "Update Services" wurde gestartet.
Das bringt wiederum die For/F-Anweisung in dem Block :ProcessLine durcheinander.

Also, ein paar Anregungungen zur Verfeinerung:

  • Die 80-Prozentlösung: Ersetze den Block ":ProcessLine" wie folgt:
--> Haken an der Geschichte: am Ende des "Errortext"-Parameters %%l kleibt noch ein sinnfreies Anführungszeichen. Sieht blöd aus.

  • Deshalb eventuell noch....falls immer nur EIN Errorcode abgefragt wird und nicht ein GEQ/größer gleich Errorcode, dann schon oben schreiben
STATT: ....for /f "usebackq delims=" %%i in ("%Log%") DO...
BESSER: ...For /f "delims=" %%i in ('findstr ",%code%," "%Log%"') DO...
Geht schneller. Und unten in ":Processline" kann entsprechend statt "GEQ" ein "EQU" rein.

  • Ebenfalls in ":Processline kannst Du überlegen, ob Du den String, die ganze Eventlog-Zeile, weiter aussiebst und weitere Parameter wegfilterst.
Die dem "Errorcode" folgenden Token sind nicht sehr ergiebig... eigentlich kannst Du auf die Info "1", "2" oder "N/A" verzichten.
Also kannst Du auch schreiben
Statt: ...For /f "delims=, tokens=1,2,3,*" %%i .... DO ...mit %%i bis %%l
Besser z.B.....
For /f "delims=, tokens=1,2,3,6,*" ...%%i ... DO .....mit %%i bis %%m (oder ähnlich).

  • Falls dieses oben beschriebene Anführungszeichen nervt, dann müssen eben die eine oder andere dynamische Variable nochmals kurz umgespeichert werden in eine statische (also eine die als als "Set var=%%k" angelegt wurde). Dann lässt sich mit "echo %var:0.~1%" alles bis aufs letzte Zeichen, also das Anführungszeichen anzeigen.

Grüße
Biber
Mitglied: Silentuser
Silentuser 20.08.2007 um 09:28:18 Uhr
Goto Top
Moin Biber

also herzlichen Dank für die erläuterung, so funktioniert es schonmal:


ein paar fragen hätt ich aber dem persöhnlichen verständniss halber.
Und zwar wie is das mit dem

gemeint, ich verstehe wie die Lösung aussehen soll aber leider nicht wie ich es umsetze und es wäre doch noch ein nettes featur, wo bestimmst du was %%i bzw %%m ist (woher weiß die Batch was was ist ? ich blick da nich so ganz durch. und wo für steht EQU bzw. GEQ?

wenn das jetzt zuviel erklährungs aufwendige Schreibarbeit ist, is auch nich schlimm dann lern ich mir das bei gelegenheit alles mal selber an ;-) face-wink

Vieleicht noch neben bei eine offtopic frage:

Ist es möglich per Batch einen "farbigen" Text in eine .txt datei zu schreiben?

Bsp. ich schreibe
so das wird ja dann per E-Mail versendet, ist es möglich dieses "WARNING´s from Applications" z.B. Rot zu schreiben?

Vielen Dank für die Erklährungen ;-) face-wink

Gruß

der Silentuser
Heiß diskutierte Beiträge
question
Google-Konto: PW-Rücksetzung funktioniert nichtmrserious73Vor 1 TagFrageE-Mail14 Kommentare

Hallo zusammen, habe hier gerade einen merkwürdigen Fall: Habe ein gmail-Konto, für das das Passwort nicht mehr bekannt ist. Da das Konto in Thunderbird gespeichert ...

question
Einstreuung - Fremdspannung im Netzwerkkabel kompensieren2U1C1D3Vor 1 TagFrageNetzwerkgrundlagen14 Kommentare

Hallo zusammen! Ich muss bei einer Netzwerkinstallation zu einem Client ein Spezialkabel mit einbinden. Die vollständige Installation ist CAT6, 1000BaseT, das Spezialkabel ist aber nur ...

general
Downloadportal gesuchtdeethreeVor 23 StundenAllgemeinCloud-Dienste4 Kommentare

Guten Morgen, hat jemand eine kostenfreie / kostenfplichtige Empfehlung für diese Anforderung: Im Zuge von Corona müssen wir pro Kunde zwei Dokumente bereitstellen und dieser ...

question
Namen für Patchfeld Jacks als Kupplung gesucht gelöst StefanKittelVor 19 StundenFrageNetzwerke5 Kommentare

Hallo, bei einem Kunden kommt man bei einem 19" NetzwerkSchrank weder über die Rückseite noch üer die Seiten an die Rückseite der Geräte. Nun suche ...

general
Ticket System Open Source SolutionmannixdVor 1 TagAllgemeinWebentwicklung4 Kommentare

Hallo zusammen, ich stehe vor folgendem Problem, bzw. hätte gern ein paar Ratschläge. Unser Kunde möchte ein Ticket-System (Help-Desk) Solution. Das ganze möchte der Kunde ...

question
WLAN Lösung mit 2 APs gesuchtEDVMan27Vor 10 StundenFrageLAN, WAN, Wireless9 Kommentare

Hallo, sorry, wenn das schon wieder Jemand fragt Welche WLAN Lösungen mit Roaming gibt es? Der Router soll eine PFSense werden. Switche folgen dem WLAN-Konzept. ...

general
Empfehlung Voip ProviderdeethreeVor 23 StundenAllgemeinInformationsdienste7 Kommentare

Guten Morgen, hat jemand eine Empfehlung für einen guten Voip Anbieter ? Ich möchte meinen bestehenden DSL Vertrag bei Vodafone lösen und ggf. zu Pyur ...

question
Docker: php: entrypoint not foundUmschuelerThsVor 21 StundenFrageApache Server9 Kommentare

Moin zusammen, ich bastle gerade an einem Custom Image für Processwire und habe das Problem, wenn ich meinen Container Builde, dass der Web Container mit ...