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
GELÖST

Letzte 10 Zeilen aus Dateien lesen

Frage Entwicklung Batch & Shell

Mitglied: didie08

didie08 (Level 1) - Jetzt verbinden

02.05.2012, aktualisiert 18.10.2012, 2406 Aufrufe, 7 Kommentare

Ich brauche Hilfe beim verwendeden von foschleifen

Hallo

Ich habe in einem Ordner Logfiles stehen. Von diesen Logfiles möchte ich jeweils die letzten 10 Zeilen in einer Auswertung zusammenfassen. Ich habe mir gedacht dies mit einer verschachtelten forschleife zu tun. In der ersten Schleife zähle ich die Zeilen und in der zweiten Schleife überspringe ich die nicht benötigten Zeilen. Hier habe ich nun aber das Problem, dass meine Variable %zeile_neu% von der skip Funktion nicht erkannt wird. Kann mir jemamand sagen warum nicht?


01.
  
02.
echo on & setlocal EnableDelayedExpansion 
03.
rem liste der Logfiles 
04.
rem 
05.
dir /B D:\wzb-daten-transfer\logs\cz\*.log>templiste1.txt 
06.
 
07.
for /f "tokens=1,* delims= " %%i in (templiste1.txt) do ( 
08.
                                       	 
09.
	set zeilen=0 
10.
 
11.
	rem Zeilen zaehlen. 
12.
 
13.
	for /f "tokens=* delims= " %%k in (D:\wzb-daten-transfer\logs\cz\%%i) do ( 
14.
	set /a zeilen=!zeilen!+1 
15.
	echo !zeilen! 
16.
 
17.
18.
	 
19.
	set /a zeile_neu=!zeilen!-10 
20.
 
21.
	echo !zeile_neu! 
22.
  
23.
	for /f "tokens=* skip=!zeile_neu! delims= " %%m in (D:\wzb-daten-transfer\logs\cz\%%i) do ( 
24.
 
25.
	echo %%m>>D:\wzb-daten-transfer\logs\cz\auswertung.log 
26.
 
27.
28.
	 
29.
30.
 
Gruß
didie08
Mitglied: Skyemugen
02.05.2012, aktualisiert 18.10.2012
Aloha,

warum so viel gewurstel, unser lieber bastla hat da mal was hingekritzelt (bzw. eben die dort auch genannte tail.exe nutzen)

greetz André

P.S.: ein einfaches Nutzen von %zeile_neu% sollte das Problem beheben
Bitte warten ..
Mitglied: bastla
02.05.2012, aktualisiert 18.10.2012
Hallo didie08!

Ich würde eher so (ungetestet) an die Sache herangehen:
01.
echo on & setlocal 
02.
for /f "tokens=1,* delims= " %%i in ('dir /B D:\wzb-daten-transfer\logs\cz\*.log') do call :ProcessFile "D:\wzb-daten-transfer\logs\cz\%%i" 
03.
goto :eof                                       	 
04.
 
05.
:ProcessFile 
06.
for /f "delims=:" %%a in ('find /c /v "!!!!!"<%1') do set "zeilen=%%a" 
07.
set /a zeile_neu=zeilen-10 
08.
echo %zeile_neu% 
09.
more +%zeile_neu% %1>>D:\wzb-daten-transfer\logs\cz\auswertung.log 
10.
goto :eof
Ganz klar ist mir übrigens Deine erste Schleife (die ich einfach mal übernommen habe) nicht - eigentlich sollte die eher so aussehen:
for /f "delims=" %%i in ('dir /B D:\wzb-daten-transfer\logs\cz\*.log') do call :ProcessFile "D:\wzb-daten-transfer\logs\cz\%%i"
Übrigens: Sollte es in den Dateien Zeilen mit "!!!!!" geben, einfach eine andere Zeichenfolge, die sicher nicht enthalten ist, in der Zeile 6 des Batches verwenden ...

Grüße
bastla

[Edit] @skye
Das hätte ich vermutlich auch gefunden - aber mal leicht verändert "kritzeln" ist ja auch schön ...
[/Edit]
Bitte warten ..
Mitglied: 106009
02.05.2012 um 15:48 Uhr
gelöscht, unnötig Zeit verplempert.
Bitte warten ..
Mitglied: didie08
02.05.2012 um 17:16 Uhr
Hallo bastla

Vielen Dank für die schnelle Antwort.

Leider werden die Schleifen nicht durchlaufen. Ich habe eine echo %1>>testlog1.txt in der 2 Schleife eingebaut um das zü prufen. Diese testlog1.txt enthält nur eine Zeile.

01.
echo on & setlocal 
02.
 
03.
for /f "tokens=* delims=" %%i in ('dir /B D:\wzb-daten-transfer\logs\cz\*.log') do ( 
04.
call :ProcessFile "D:\wzb-daten-transfer\logs\cz\%%i" 
05.
goto :eof 
06.
 
07.
08.
 
09.
 
10.
:ProcessFile 
11.
echo %1>>testlog1.txt 
12.
 
13.
for /f "tockens=* delims=:" %%a in ('find /c /v "!!!!!"<%1') do ( 
14.
set "zeilen=%%a" 
15.
set /a zeile_neu=zeilen-10 
16.
echo %zeile_neu% 
17.
more +%zeile_neu% %1>>D:\wzb-daten-transfer\logs\cz\auswertung.log 
18.
goto :eof 
19.
pause 
20.
 
21.
22.
 
Gruß
didie08
Bitte warten ..
Mitglied: bastla
02.05.2012 um 17:24 Uhr
Hallo didie08!

Vorschlag: Ersetze, wenn Dir denn schon nach Änderungen ist, meine Zeile 6 durch
for /f %%a in ('find /c /v "!!!!!"^<%1') do set "zeilen=%%a"
(nötig wär's nicht [Edit] wegen des delimiters, aber das "^" fehlte dann doch sehr [/Edit]), belasse dafür den Rest meines Ansatzes so, wie ich ihn geschrieben habe und teste mal damit ...

Grüße
bastla
Bitte warten ..
Mitglied: didie08
03.05.2012 um 14:52 Uhr
Hallo Bastla.

Ich hatte das Beispiel von dir verädert weil sich garnichts getan hatte, und ich dachte ich müsste den Code noch entsprechend ergänzen.

Nachdem ich nun dienen Code unverändert mit der geänderten Zeile 6 verwendet habe, funktioniert die bat einwandfrei. Super vielen Dank dafür.

Was mich noch gerne wissen würde, warum ist das ^ so entscheidend?

Gruß
didie08
Bitte warten ..
Mitglied: Skyemugen
03.05.2012 um 15:52 Uhr
Aloha,

hmm also
tockens=
Was'n das?

greetz André

P.S.: Ohne zu escapen ^ würde da nix mit < in der Verarbeitungsklammer laufen, da macht dir der Interpreter den H. M. Murdock

offtopic ... ollidolli er innert mich mehr und mehr an Kaputtnick ... gelöscht, unnötig Zeit verplempert ... ja, das war genau seine Art
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Windows 10
gelöst Windows 10 eigene Dateien spinnt (28)

Frage von Revo1506 zum Thema Windows 10 ...

Microsoft Office
SHS Dateien lesen (3)

Frage von franksig zum Thema Microsoft Office ...

Windows 10
Angezeigte Größe von komprimierten Dateien auf Windows 10 (5)

Frage von ArminWeinmann zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (29)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

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

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...