Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Auslesen bestimmter Werte aus Logfile mittels Batch

Frage Entwicklung Batch & Shell

Mitglied: tkline

tkline (Level 1) - Jetzt verbinden

19.03.2008, aktualisiert 15:28 Uhr, 4597 Aufrufe, 3 Kommentare

Hallo Leute, hab folgendes Problem:

Ich möchte aus dem angegebenen Logfile (Auszug siehe unten), welches
aus tausenden von Einträgen besteht. Die "Warning" Einträge, welche
den Text "Datei wurde übersprungen, wegen falschem Inhalt" enthält herausfiltern.

Soweit so gut. Das Script habe ich soweit schon vorbereitet siehe
unten. Ich möchte jedoch die folgenden Warning Meldungen, die nach diesem Eintrag
kommen auch mit ausgeben, so dass das Endergebnis folgendermaßen aussieht:

WARNING ( 1717,188): Datei wurde übersprungen, wegen falschem Inhalt
WARNING ( 1717,204): 2005659/01
WARNING ( 1717,204): 1330565_VG01_1853382/03
WARNING ( 1717,204): 2031936_BM0D_1853394/00

Das Schwierige hierbei ist, dass ich nicht weiss wie viele Einträge folgen. Es können
wie im Beispiel 3 oder auch mehr sein.
Gibt es hierzu eine Lösung.
Evtl.: Gebe mir den Warning Wert aus bis z.B. ein anderer Eintrag folgt z.B INFO oder ERROR...




Auszug aus Logfile:
---------------------snip----------------------------

INFO ( 0,243): super
INFO ( 0,564): Spitze
INFO ( 0,224): Klasse
INFO ( 0,344): Alles im Lot
DEBUG ( 0,435):
DEBUG ( 0,356): user.country = DE
DEBUG ( 0,234): sun.os.patch.level = Service Pack 2
DEBUG ( 0,698): path.separator = ;
DEBUG ( 0,687): user.country = DE
DEBUG ( 0,703): sun.os.patch.level = Service Pack 2
ERROR ( 425,423): Fehler 1
ERROR ( 433,423): Fehler 123
ERROR ( 435,345): Failure 457
ERROR ( 345,533): Fehler Nix gut
WARNING ( 1717,188): Datei wurde übersprungen, wegen falschem Inhalt
WARNING ( 1717,204): 2005659/01
WARNING ( 1717,204): 1330565_VG01_1853382/03
WARNING ( 1717,204): 2031936_BM0D_1853394/00
INFO ( 0,344): Alles im Lot
DEBUG ( 0,435):
DEBUG ( 0,356): user.country = DE
DEBUG ( 0,234): sun.os.patch.level = Service Pack 2
WARNING ( 1435,188): Datei nicht gefunden
WARNING ( 1245,203): 243524
WARNING ( 1245,243): 234524352
WARNING ( 1245,244): 234523452345

---------------------snip----------------------------

01.
 
02.
@echo off & setlocal 
03.
set "Summary=C:\logsummary.txt" 
04.
set "Filter=Datei wurde übersprungen, wegen falschem Inhalt" 
05.
 
06.
if exist "%Summary%" del "%Summary%" 
07.
for %%i in (C:\logs\logfilename.txt) do ( 
08.
	findstr /c:"%Filter%" "%%i">nul && ( 
09.
		echo Logfilename: %%i 
10.
		for /f "delims=" %%a in ('findstr /c:"%Filter%" "%%i"') do echo %%a 
11.
		echo. 
12.
	)>>"%Summary%" 
13.
echo %%i 
14.
15.
 
16.
 
17.
pause 
18.
 

Hoffe ihr könnt mir hier weitgerhelfen


Grüße
Tom
Mitglied: miniversum
19.03.2008 um 14:31 Uhr
Versuchs mal damit:
01.
@echo off & setlocal 
02.
set "Summary=C:\logsummary.txt" 
03.
set "Filter=Datei wurde übersprungen, wegen falschem Inhalt" 
04.
 
05.
for /f "delims=:" %%a in ('findstr /N /c:"%Filter%" "C:\logs\logfilename.txt"') do call:writelines %%a 
06.
pause 
07.
goto:eof 
08.
 
09.
 
10.
:writelines 
11.
set zeile=%1 
12.
set "ausgabe=%random%%random%%random%" 
13.
for /f "tokens=1,* delims=:" %%a in ('findstr /N .* "C:\logs\logfilename.txt"^|findstr /B %zeile%') do set ausgabe=%%b 
14.
if "%Ausgabe:~0,7%" neq "WARNING" goto:eof 
15.
 
16.
echo %ausgabe% 
17.
set /a zeile=zeile+1 
18.
call:writelines %zeile% 
19.
 
20.
goto:eof
miniversum
Bitte warten ..
Mitglied: tkline
19.03.2008 um 15:07 Uhr
Danke dir,

Habe allerdings noch 2 Fragen:
Die Ausgabe ins logsummary.txt funkioniert nicht. Brauch hier noch
>>"%Summary%" Wo bringe ich das in deinem Script unter?

2. Wie muss ich das Skript ändern, wenn ich mehrer Logfiles durchsuchen lasse?
Wenn ich C:\logs\*.txt eingebe, dann bekomme ich keine Ausgabe.

Grüße
Tom
Bitte warten ..
Mitglied: miniversum
19.03.2008 um 15:28 Uhr
Ja das war nur der prinzipielle Teil.
Das ganze müßte dan so aussehen (ungetestet)
01.
@echo off & setlocal 
02.
set "Summary=C:\logsummary.txt" 
03.
set "logfilefilter=C:\logs\*.txt" 
04.
set "Filter=Datei wurde übersprungen, wegen falschem Inhalt" 
05.
 
06.
if exist "%Summary%" del "%Summary%" 
07.
for /f "delims=:" %%f in ('dir /B /a-D "%logfilefilter%"') do ( 
08.
echo Logfilename: %%~nxf>>%Summary% 
09.
for /f "delims=:" %%a in ('findstr /N /c:"%Filter%" "%%~ff"') do call:writelines %%a "%%~ff" 
10.
11.
pause 
12.
goto:eof 
13.
 
14.
 
15.
:writelines 
16.
set zeile=%1 
17.
set "logfilename=%~2" 
18.
set "ausgabe=%random%%random%%random%" 
19.
for /f "tokens=1,* delims=:" %%a in ('findstr /N .* "%logfilename%"^|findstr /B %zeile%') do set ausgabe=%%b 
20.
if "%Ausgabe:~0,7%" neq "WARNING" goto:eof 
21.
 
22.
echo %ausgabe%>>%Summary% 
23.
set /a zeile=zeile+1 
24.
call:writelines %zeile% 
25.
 
26.
goto:eof
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Bestimmte Zeile einer Textdatei mit Batch auslesen (2)

Frage von PinkFLuffyUnicorn zum Thema Batch & Shell ...

Batch & Shell
gelöst Datumbezogenes Auslesen von Logfiles (2)

Frage von tiny.deluxe zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch zum auslesen bestimmter Einträge der IPconfig mit for-Schleifen (12)

Frage von Dantaros zum Thema Batch & Shell ...

Neue Wissensbeiträge
Humor (lol)

Taschenrechner in IOS kaputt!

(5)

Information von Lochkartenstanzer zum Thema Humor (lol) ...

Sicherheit

Kanadischer Geheimdienst veröffentlicht erstmals Sicherheitssoftware

(3)

Information von BassFishFox zum Thema Sicherheit ...

Virtualisierung

Docker Monitoring und Steuerung per "sen"

Tipp von Frank zum Thema Virtualisierung ...

Heiß diskutierte Inhalte
Windows 7
Abbruch bei Brennvorgang (19)

Frage von Simulant zum Thema Windows 7 ...

Router & Routing
Externe IP von innen erreichbar machen (16)

Frage von Windows10Gegner zum Thema Router & Routing ...

Firewall
WIndows 7 RDP Massen Angriff (14)

Frage von Motte990 zum Thema Firewall ...