Text von zeile mit wort, bis ziele mit wort
suche eine Batch die eine txt auswertet
inhalt:
text a
text b
text c
Fehler
fehler in KB4568792
text d
Fehler
fehler in KB5464121
jetzt möchte ich gerne das der Text von Wort Fehler bis zum 2ten Fehler in eine neue txt Datei geschrieben wird.
Es soll nur der erste Fehler in eine neue Datei der danach wird nicht benötigt.
dabei können wie dazwischen liegenden zeilen variabel sein mal mehr und mal weniger.
hoffe es kann mir jemand helfen.
inhalt:
text a
text b
text c
Fehler
fehler in KB4568792
text d
Fehler
fehler in KB5464121
jetzt möchte ich gerne das der Text von Wort Fehler bis zum 2ten Fehler in eine neue txt Datei geschrieben wird.
Es soll nur der erste Fehler in eine neue Datei der danach wird nicht benötigt.
dabei können wie dazwischen liegenden zeilen variabel sein mal mehr und mal weniger.
hoffe es kann mir jemand helfen.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 229497
Url: https://administrator.de/contentid/229497
Ausgedruckt am: 23.11.2024 um 02:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo Saintwolf!
Der folgende Ansatz schreibt alle Zeilen zwischen den ersten beiden "Fehler"-Zeilen (genauer: zwischen den ersten beiden Zeilen, die mit "Fehler" beginnen) in die Ausgabedatei:
Grüße
bastla
Der folgende Ansatz schreibt alle Zeilen zwischen den ersten beiden "Fehler"-Zeilen (genauer: zwischen den ersten beiden Zeilen, die mit "Fehler" beginnen) in die Ausgabedatei:
@echo off & setlocal
set "Ein=D:\Fehlerprotokoll.txt"
set "Aus=D:\FehlerEinzel.txt"
set "Suchwort=Fehler"
set "Von="
set "Bis="
for /f "delims=:" %%i in ('findstr /nbc:"%Suchwort%" "%Ein%"') do (
if not defined Von (
set /a Von=%%i
) else (
if defined Von if not defined Bis set /a Bis=%%i
)
)
if not defined Von (echo "%Suchwort%" nicht gefunden! & pause & goto :eof)
if not defined Bis (
>"%Aus%" more +%Von% "%Ein%"
goto :eof
)
del "%Aus%" 2>nul
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "%Ein%"') do (
if %%i gtr %Von% if %%i lss %Bis% (
set "Zeile=%%j"
setlocal enabledelayedexpansion
>>"%Aus%" echo(!Zeile!
endlocal
)
)
bastla
Hallo Saintwolf!
Sorry - hatte nicht genau genug gelesen ...
Versuch es damit:
Grüße
bastla
Sorry - hatte nicht genau genug gelesen ...
Versuch es damit:
@echo off & setlocal
set "Ein=D:\Fehlerprotokoll.txt"
set "Aus=D:\FehlerEinzel.txt"
set "SuchwortVon=Fehler"
set "SuchwortBis=Fehler"
for /f %%i in ('find /i "%SuchwortVon%"<"%Ein%"') do set /a Anzahl=%%i
if %Anzahl% leq 1 set "SuchwortVon=Neustart"
set "Von="
set "Bis="
for /f "delims=:" %%i in ('findstr /nbc:"%SuchwortVon%" "%Ein%"') do if not defined Von set /a Von=%%i
if not defined Von (echo "%SuchwortVon%" nicht gefunden! & pause & goto :eof)
for /f "delims=:" %%i in ('findstr /nbc:"%SuchwortBis%" "%Ein%"') do if not defined Bis if %Von% neq %%i set /a Bis=%%i
if not defined Bis (
>"%Aus%" more +%Von% "%Ein%"
goto :eof
)
del "%Aus%" 2>nul
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "%Ein%"') do (
if %%i gtr %Von% if %%i lss %Bis% (
set "Zeile=%%j"
setlocal enabledelayedexpansion
>>"%Aus%" echo(!Zeile!
endlocal
)
)
bastla