bufferm44
Goto Top

Zeile nach gesuchter Zeile in Datei schreiben

Hallo zusammen!

Mit einer Batchdatei suche ich in einer Datei:
test.txt
unwichtig1
unwichtig2
suchwort
zeiledanach
unwichtig3

nach dem Wort "suchwort", und schreibe die Zeile in die datei "result.txt".
Alle anderen Zeilen schreibe ich in die Datei "andere.txt":
for /F "delims=" %%x in (c:\bat\test.txt) do call:doline "%%x"  
pause
goto:eof
:doline
set "line=%~1"  
if "%line:~0,20%" equ "suchwort" (  
echo %line%>>"c:\bat\result.txt"  
*****
) else (
echo %line%>>"c:\bat\andere.txt"  
)
goto:eof
Jetzt würde ich da wo die Sterne sind gerne einen Befehl einbauen der die "Zeile danach" in eine andere Datei schreibt.
Aber ich bekomme es irgendwie nicht hin face-sad


Grüße
Tobi

Content-ID: 62961

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

Ausgedruckt am: 22.11.2024 um 11:11 Uhr

bastla
bastla 03.07.2007 um 18:13:57 Uhr
Goto Top
Hallo bufferm44!

Etwa so:
@echo off & setlocal
set Write=
for /F "delims=" %%x in (c:\bat\test.txt) do call:doline "%%x"  
pause
goto:eof
:doline
set "line=%~1"  
if "%line:~0,20%" equ "suchwort" (  
	set Write=True
	echo %line%>>"c:\bat\result.txt"  
) else (
	if not defined Write (
		echo %line%>>"c:\bat\andere.txt"	  
	) else (
		echo %line%>>"c:\bat\weitere.txt"  
		set Write=
	)
)
goto:eof

Grüße
bastla
bufferm44
bufferm44 04.07.2007 um 16:36:34 Uhr
Goto Top
Moin!

Guter Trick, die Idee hatte ich auch schon, hatte es mit der Syntax nicht hinbekommen. Im Printip funktioniert es wunderbar so. Da die auszulesende Zeile allerdings einen Haufen Sonderzeichen enthält, gibt es Probleme beim "set" der Variable.

Die "wichtige" Textzeile "danach" lautet beispielsweise:

12004X/Info eins)12:34/Infozwei:Info nummer drei(Infovier)/Infofünf(12-34)//Infosechs

Dabei kommt es zu folgendem Fehler:
C:\BAT>set "line=12004X/Info eins)12:34/Infozwei:Info nummer drei(Infovier)/Infofünf(12-34)//Infosechs"   

"12:34/Infozwei:Info" ist syntaktisch an dieser Stelle nicht verarbeitbar  

Gibt es hier noch einen Trick?

Vielen Dank!
bastla
bastla 04.07.2007 um 16:41:58 Uhr
Goto Top
Hallo bufferm44!

Versuch es vielleicht so:
@echo off & setlocal
set Write=
for /F "delims=" %%x in (c:\bat\test.txt) do (set "Line=%%x") & call:doline  
pause
goto:eof
:doline
if "%line:~0,20%" equ "suchwort" (  
    set Write=True
    echo %line%>>"c:\bat\result.txt"  
) else (
    if not defined Write (
        echo %line%>>"c:\bat\andere.txt"      
    ) else (
        echo %line%>>"c:\bat\weitere.txt"  
        set Write=
    )
)
goto:eof

Grüße
bastla

P.S.: War kein Trick, sondern ein Flag (Schalter) ... face-wink
bufferm44
bufferm44 04.07.2007 um 16:53:52 Uhr
Goto Top
Flag ;)

Nein, leider keine Veränderung, gleiche Fehlermeldung wie vorher..
bastla
bastla 04.07.2007 um 19:14:59 Uhr
Goto Top
Hallo bufferm44!

Jetzt aber ...
@echo off & setlocal
set Write=
for /F "delims=" %%x in (c:\bat\test.txt) do set "Line=%%x" & call:doline  
goto :eof
:doline
if "%line:~0,20%" equ "suchwort" set Write=True & echo %line%>>"c:\bat\result.txt" & goto :eof  
if not defined Write echo %line%>>"c:\bat\andere.txt" & goto :eof  
echo %line%>>"c:\bat\weitere.txt"  
set Write=
goto :eof

Grüße
bastla
bufferm44
bufferm44 05.07.2007 um 16:28:52 Uhr
Goto Top
Moin!

Ich bin hochgradig begeistert, vielen Dank face-smile

Tobias

EDIT: Hm, kann ich das Thema nicht "als gelöst" deklarieren? Oder können das nur die Mods?
bastla
bastla 05.07.2007 um 16:33:44 Uhr
Goto Top
Hallo bufferm44!

... kann ich das Thema nicht "ald gelöst" deklarieren?
Kannst Du selbst, indem Du bei Deinem (Threaderöffnungs-)Beitrag auf "Editieren" gehst und dann ganz am Ende den entsprechenden Haken setzt.

Grüße
bastla