Top-Themen

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
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, 2435 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 ..
Ähnliche Inhalte
Debian
Letzte Zeile lesen und einfügen
gelöst Frage von Fenris14Debian4 Kommentare

Guten Tag, ich versuche mich mal wieder ein wenig an Scripten und habe hier jetzt das Problem das ich ...

Batch & Shell
Mehrere txt Dateien einlesen und letzte Zeile löschen
gelöst Frage von THRILLERBatch & Shell1 Kommentar

Hallo Gemeinde, ich beschäftige mich mit folgendem Problem. Und zwar will ich aus einem Ordner mehrere Dateien einlesen und ...

Batch & Shell
Mit Batch-Datei eine Datei lesen, Zeilen ändern und als neue Datei schreiben
gelöst Frage von GeoSemBatch & Shell20 Kommentare

Hallo Ich versuche nun schon seit einiger Zeit das "kleine" Script (unter Windows 8) zum laufen zu bringen - ...

Batch & Shell
Batch um Zeichen aus erster und letzter Zeile einer TXT Datei zu löschen
Frage von Bobby0712Batch & Shell2 Kommentare

Hallo. Wie der Titel schon sagt suche ich eine möglichkeit wie ich aus einer TXT Datei aus der ersten ...

Neue Wissensbeiträge
Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 30 MinutenViren und Trojaner

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 4 StundenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 4 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Heiß diskutierte Inhalte
Vmware
Installation Windows 10 VMware
Frage von Ghost108Vmware17 Kommentare

Hallo zusammen, versuche gerade mit Hilfe des vshpere clients eine virtuelle Windows 10 maschine aufzusetzen. 1. virtuelle Maschine erstellt ...

Exchange Server
SBS 2011 E-Mails können gesendet werden, aber nicht von extern empfangen
Frage von andreas1234Exchange Server14 Kommentare

Hallo Community, ich habe das Problem, dass seit knapp zwei Wochen die E-Mails von meinem SBS 2011 einwandfrei gesendet ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell8 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...