Teil einer Textdatei in eine andere Datei schreiben
Liebe Leute,
wer kennt eine elegante Möglichkeit, in einer Textdatei_A ab einem bestimmten Suchbegriff_1 nach einem Suchbegriff_2 zu suchen? Wenn dieser Suchbegriff_2 vorkommt, soll alles ab dem Suchbegriff_1 bis zum Ende dieser Datei in eine neue Textdatei_B geschrieben werden.
Diese Batch-Datei soll keine externen Programme verwenden und unter
Vielen Dank für Eure Mühe
Herzliche Grüße
Ruebezahl
wer kennt eine elegante Möglichkeit, in einer Textdatei_A ab einem bestimmten Suchbegriff_1 nach einem Suchbegriff_2 zu suchen? Wenn dieser Suchbegriff_2 vorkommt, soll alles ab dem Suchbegriff_1 bis zum Ende dieser Datei in eine neue Textdatei_B geschrieben werden.
Diese Batch-Datei soll keine externen Programme verwenden und unter
Windows 2000 / 2003
lauffähig sein.Vielen Dank für Eure Mühe
Herzliche Grüße
Ruebezahl
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 43771
Url: https://administrator.de/contentid/43771
Ausgedruckt am: 20.11.2024 um 13:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo Ruebezahl
Ich würde in der Textdatei die Zeilennummer von Begriff1 als auch 2 suchen.
Wenn Zeilennummer2 > Zeilennummer1 dann Textdatei ab Zeile X anzeigen und in eine neue Textdatei umleiten.
Ich habe gerade nicht soviel Zeit zum Ausprobieren. Daher nur Codeschnipselchen, die du zum Zusammenbau bräuchtest:
Zeilennummer anzeigen: findstr /n "Suchbegriff" "[Dateiname]"
Textfile ab bestimmter Zeile anzeigen: more +"Zeilenanzahl" "[Dateiname]"
Viele Grüsse
-= Axel =-
Ich würde in der Textdatei die Zeilennummer von Begriff1 als auch 2 suchen.
Wenn Zeilennummer2 > Zeilennummer1 dann Textdatei ab Zeile X anzeigen und in eine neue Textdatei umleiten.
Ich habe gerade nicht soviel Zeit zum Ausprobieren. Daher nur Codeschnipselchen, die du zum Zusammenbau bräuchtest:
Zeilennummer anzeigen: findstr /n "Suchbegriff" "[Dateiname]"
Textfile ab bestimmter Zeile anzeigen: more +"Zeilenanzahl" "[Dateiname]"
Viele Grüsse
-= Axel =-
hier mal ein script, welches eine section aus einer ini rausholt. du musst dieses script nur sinnvoll zusammenkuerzen, dann haste es.
Esco
@echo off
REM Param 1: Pfad zur IniDatei
REM Param 2: Pfad zur ErgDatei
REM Param 3: Name der gesuchten Section
set backupini=%1
set ErgFile=%2
set SectionName=%3
set TempFile=iniExtTemp.mbfr
set inGesHeader=0
set inGesSection=0
set inHeader=0
set Zeile=0
del %ErgFile% >NUL >NUL
del %TempFile% >NUL >NUL
for /F "tokens=1 delims=" %%f in (%backupini%) DO (set Zeile=%%f & call:[BearbeiteZeile])
:[BearbeiteZeile]
echo %Zeile%>%TempFile%
findstr "[" %TempFile% >NUL
if %errorlevel%==0 set inHeader=1 & set inGesSection=0 & set inGesHeader=0
findstr "/C:%SectionName%" %TempFile% >NUL
if %errorlevel%==0 set inGesHeader=1
findstr "REM " %TempFile% >NUL
if %errorlevel%==0 set inGesSection=0
if %inGesSection%==1 echo %Zeile% >> %ErgFile%
if %inGesHeader%==1 set inGesSection=1
:EOF
del %TempFile% >NUL
Esco
Moin Bätchler,
ich setze einfach diesen Thread auf gelöst... da können höchstens noch Spitzfindigkeiten ergänzt werden.
Die einzige Spitzfindigkeit, die ich noch anzumerken hätte:
Wenn die Textdaten nun nicht gerade größer sind als die Hälfte des virtuellen Arbeitsspeichers, dann kann auf das Zwischenspeichern in einer Datei_B verzichtet werden.
Aber das sind, wie geschrieben, nur kosmetische Anmerkungen.
Vielen Dank allen
Grüße
Biber
P.S. @Ruebezahl: Habe Deinen Code auf umformatiert.
ich setze einfach diesen Thread auf gelöst... da können höchstens noch Spitzfindigkeiten ergänzt werden.
Die einzige Spitzfindigkeit, die ich noch anzumerken hätte:
Wenn die Textdaten nun nicht gerade größer sind als die Hälfte des virtuellen Arbeitsspeichers, dann kann auf das Zwischenspeichern in einer Datei_B verzichtet werden.
@ECHO off
SETLOCAL
REM Ersten Suchbegriff finden (dieser Begriff taucht immer irgendwo auf)
FOR /f "delims=:" %%i IN ('FINDSTR /n /c:Suchbegriff_1 Textdatei_A') DO SET /a "zahl=%%i - 1"
REM Zeilenzahl um 1 zurücksetzen, damit Suchbegriff_1 in der Ausgabedatei erscheint
REM Zweiten Suchbegriff finden ... Textdatei_A ab Suchbegriff_1 an MORE und FINDSTR weiterreichen..
FOR /f %%i IN ('MORE +%zahl% Textdatei_A^|FINDSTR /c:Suchbegriff_2') DO GOTO weiter
goto :eof
:weiter
REM weitere Verarbeitung
:eof ----------------- die Marke ":eof" braucht nicht unbedingt angegeben werden, die ist hart verdrahtet in der CMD.exe
Aber das sind, wie geschrieben, nur kosmetische Anmerkungen.
Vielen Dank allen
Grüße
Biber
P.S. @Ruebezahl: Habe Deinen Code auf umformatiert.