freaggle
Goto Top

Zählen mit FINDSTR

Hallo zusammen.

Vorab. Ich bin ganz neu im Thema Scripting usw.

Ich bin grade dabei die Überwachung der Serverlandschaft mittels Nagios zu realisieren.
Und dabei hab ich ein kleines Problem.

Ich möchte auf einem Windows System log Dateien nach Schlagwörtern durchsuchen und dann zählen, wie oft das Wort in der Datei vorkommt.
Diese Zahl muss ich dann irgendwie ausgeben und per Script an Nagios übergeben. Aber das ist ein anderes Thema.

ich habe schon ein wenig mit findstr rumgespielt. Nach Schlagwörtern kann ich suchen, nur zählen und iwie ausgeben bekomme ich nicht hin.
Und da kommt ihr ins Spiel face-smile

Hat vielleicht jemand für dieses "Problem" einen Lösungsansatz?

Vielen Dank

Content-Key: 182102

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

Printed on: April 19, 2024 at 17:04 o'clock

Member: bastla
bastla Mar 16, 2012 at 13:58:17 (UTC)
Goto Top
Hallo freaggle und willkommen im Forum!

Unter der Annahme, dass die Schlagwörter nur einmal je Zeile vorkommen, ungetestet etwa so:
@echo off & setlocal
set "Log=D:\Dein Log.txt"  
set "Schlagwort=Dein Schlagwort"  

for /f  %%i in ('find /c "%Schlagwort%"<"%Log%"') do set /a Anzahl=%%i  
echo "%Schlagwort%" kommt in "%Log%" in %Anzahl% Zeilen vor.  
Grüße
bastla

[Edit] Da könnte ja auch find genügen [/Edit]
Member: Skyemugen
Skyemugen Mar 16, 2012 at 14:00:17 (UTC)
Goto Top
Aloha,

du könntest mit findstr wenn denn auch nur die Anzahl der Zeilen ausgeben, wo das Schlagwort vorkommt, nicht aber die Anzahl des Schlagwortes
set "vari=0"  
for /f "delims=" %%s in ('findstr /c:%Schlagwort% %temp%\liste.txt') do set /a vari+=1  
echo %vari%

greetz André

@bastla ... egal, ich hab' Feierabend, viel Spaß noch beim Rumbasteln face-wink
Ja, wunderte mich schon.
Member: bastla
bastla Mar 16, 2012 at 14:08:03 (UTC)
Goto Top
@skye
Da war ich etwas zu flott unterwegs - das wäre eigentlich so gemeint gewesen (aber ohnehin suboptimal):
set /a Anzahl=0
for /f "delims=:" %%i in ('findstr /i /c:"%Schlagwort%" "%Log%"^|findstr /n "^"') do set /a Anzahl=%%i
Grüße
bastla
Member: freaggle
freaggle Mar 16, 2012 at 14:29:01 (UTC)
Goto Top
Ihr seid ja genial face-smile
Vielen Dank.
Funktioniert wunderbar.

Habt ihr auch noch eine gute Idee, wie ich den ermittelten Wert nun an ein Script übergeben könnte?

Schönes Wochende.

Mfg
Member: bastla
bastla Mar 16, 2012 at 14:31:50 (UTC)
Goto Top
Hallo freaggle!
Habt ihr auch noch eine gute Idee, wie ich den ermittelten Wert nun an ein Script übergeben könnte?
Ja.

Grüße
bastla
Member: freaggle
freaggle Mar 19, 2012 at 08:40:05 (UTC)
Goto Top
Zitat von @bastla:
> Habt ihr auch noch eine gute Idee, wie ich den ermittelten Wert nun an ein Script übergeben könnte?
Ja.

Hallo bastia.

Die da wäre...?

Danke face-smile
Member: bastla
bastla Mar 19, 2012 at 09:41:05 (UTC)
Goto Top
Hallo freaggle!

So, wie Dir etwas an meiner Antwort gefehlt hat, geht es mir mit Deiner Frage ... face-wink

Aber grundsätzlich: Der Wert steht in der Variablen %Anzahl%

Grüße
bastla
Member: freaggle
freaggle Mar 23, 2012 at 12:36:03 (UTC)
Goto Top
Hallo zusammen.

Ich habe das Ganze nun nach langem Suchen und studieren hinbekommen face-smile
Hat mich einiges an Nerven gekostet.
Aber es macht dann doch Spaß, wenn es einmal läuft.
Und so ganz langsam steige ich auch dahinter...

Habe nun aber ein neues Problem...

Ich suche in einer Dati nach einem Schlagwort.
Kommt das Wort vor, soll er mir einen Teil der Zeile ausgeben, in der das Wort vorkommt. Das würde ich glaube ich noch hinbekommen..
Kommt das Wort öfters vor, soll er mir jedoch nur die Zeile ausgeben, in welcher das aktuellste Datum mit Zeit steht...
Kann so etwas mit einer Batch überhaupt funktionieren?

Mfg
Member: bastla
bastla Mar 23, 2012 at 22:43:00 (UTC)
Goto Top
Hallo freaggle!
Kann so etwas mit einer Batch überhaupt funktionieren?
Jedenfalls nicht, wenn Du nicht von Deiner Geheimhaltungspflicht hinsichtlich des Aufbaues der Textdatei entbunden wirst ...

Abgesehen davon wäre das ein Thema für einen neuen Thread.

Grüße
bastla