holzholer
Goto Top

Batch - Zeige X Zeilen aus Datei.txt

Hallo zusammen,

ich hab hier ja schon recht viel über batch und co gelesen, aber jetzt hab ich ein Problem, bei dem ich noch nichts dazu gefunden habe. Ich bin mir sicher ihr könnt mir dabei helfen:

Ich hab eine txt Datei mit recht viel text (ne extrem ausführliche Logdatei). Nun hab ich mit "findstr /N" die für mich relevanten Zeilen gefunden. Mein Problem ist aber, dass ich nicht nur diese Zeilen brauche, sondern die X Zeilen darunter auch noch. Ich brauche also von Position A, Anzahl X Zeilen.

Ich dachte da an sowas wie:

more +%%A %log_name% /Show=%Anzahl_Zeilen% >> Ergebnis.txt

und das halt in einer Schleife über meine Positionen.

Hat da jemand eine Idee?

Grüße und danke im voraus

Content-ID: 113340

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

Ausgedruckt am: 23.11.2024 um 01:11 Uhr

laggflor
laggflor 06.04.2009 um 22:59:28 Uhr
Goto Top
Hm... klingt nach Unix-Grep...

Darfst du Dritt-tools verwenden?
http://unxutils.sourceforge.net/

Die Unix-Tools sind nativ für Windows kompiliert, also kein Cygwin oder so.

Für dein Problem brauchst du aus dem Zip-File nur
\usr\local\wbin\grep.exe nach %WINDIR%\system32 zu kopieren

Dann kannst du das hier machen:
type logfile.txt|grep dassuchich -A 5

was soviel heißt wie:
such im ganzen logfile.txt nach "dassuchich" und zeig bei der Fundstelle 5 Zeilen danach auch noch an...

Wenn du die Unix-Tools kennst freu dich - diese Tools funktionieren genau gleich.
Wenn nicht - mit

grep --help

bekommst du Hilfe. IMHO sind für dich grep, find und sed interessant.

Ich hoff mal das hilft.

LG Florian http://www.lagg.at/
holzholer
holzholer 07.04.2009 um 11:12:53 Uhr
Goto Top
Danke für den Tip.

Eigentlich wollte ich keine dritt-Software verwenden weil sich das ganze in einer WinPE Umgebung abspielt (ich weiss wie das eingebaut wird, das ist nicht das Problem).

Es scheint aber, dass kein Weg an grep vorbeiführt. Danke nochmal für den Link und Tip.

Falls jemand noch eine Lösung ohne grep hat, bin ich natürlich weiterhin daran interessiert.
miniversum
miniversum 07.04.2009 um 12:54:40 Uhr
Goto Top
Hier mal ne Möglichkeit nur mit Boardmitteln (ungetestet). Die ist bei langen Dateien allerdings auch langsam.
@echo off
set "datei=Datei.txt"  
set "suchtext=bla"  
set pluszeilen=10

FOR /F "tokens=1 delims=:" %%i in ('findstr /N "%suchtext%" "%datei%"') do FOR /F "tokens=1* delims=:" %%a in ('more +%%i "%datei%" | findstr /N .*') do if %%a leq %endzeile% echo %%b