Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 4563 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 Batch: CPU-Auslastung eines Prozesses auslesen und als Variable definieren (3)

Frage von tralveller zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch: Textdatei Zeilenweise auslesen (2)

Frage von CreatorX zum Thema Batch & Shell ...

Batch & Shell
gelöst Fenstertitel von anderen Tasks per batch auslesen (3)

Frage von NetMare zum Thema Batch & Shell ...

Neue Wissensbeiträge
Google Android

Cyanogenmod alternative Downloadquelle

(5)

Tipp von Lochkartenstanzer zum Thema Google Android ...

Batch & Shell

Batch als Dienst bei Systemstart ohne Anmeldung ausführen

(5)

Tipp von tralveller zum Thema Batch & Shell ...

Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Statische Routen mit Shorewall, ISC-DHCP Server konfigurieren für Android Devices (25)

Frage von terminator zum Thema LAN, WAN, Wireless ...

Server
gelöst Wie erkennen, dass nur deutsche IPs Zugang zu einer Website haben? (22)

Frage von Coreknabe zum Thema Server ...

Hardware
16-20 Port POE Switch mit VLAN (19)

Frage von thomasreischer zum Thema Hardware ...

Windows Server
Exchange HyperV Prozessorlast (18)

Frage von theoberlin zum Thema Windows Server ...