domain-jane
Goto Top

Batch - Zeile finden und ersetzen

Hallo ihr,

ich habe nun eine Weile mit nem gepipten findstring rumprobiert,
aber ich denke, für das Problem verlangt die Batch wieder ne
getunte For-Schleife eines Profis...

Ich möchte in einem Batch-file nach einem String suchen und
die Zeile, die ihn enthält, durch eine andere Zeile (zwei Wörter) ersetzen.
Ein schlichtes Ersetzen der Strings reicht nicht, weil der Suchstring variiert.

Bsp.:
Fall 1
Datei.bat
Wurmloch 15
Kältemittelwarmduscher
Knopfloch 37
Hopfenpfisterei
Wurstkater
Ersatzstring: Knopfloch 36

Fall 2
Datei.bat
Wurmloch 15
Kältemittelwarmduscher
Knopfloch 42
Hopfenpfisterei
Wurstkater
Ersatzstring: Knopfloch 44

usw.

-> Knopfloch 37(42) soll also durch Knopfloch 36(44) ersetzt werden.
Das Schlüsselwort Knopfloch bleibt immer gleich. (Original- und Ersatzstring)
Die Zahlen (welche auch Buchstaben enthalten können) sind bei beiden immer unterschiedlich.

Mit Dank im Voraus,

Jane

Content-Key: 212237

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

Printed on: April 23, 2024 at 20:04 o'clock

Member: Endoro
Endoro Jul 23, 2013 at 20:47:31 (UTC)
Goto Top
Servus,
kannst du mal testen:
@echo off &setlocal
set "search=Knopfloch 37"  
set "replace=Knopfloch 36"  
set "textfile=file.txt"  
set "newfile=new.txt"  

(for /f "delims=" %%i in ('findstr /n "^" "%textfile%"') do (  
	set "line=%%i"  
	setlocal enabledelayedexpansion
	set "line=!line:%search%=%replace%!"  
	echo(!line!
	endlocal
))>"%newfile%"  
type "%newfile%"  

lg
Member: Domain-Jane
Domain-Jane Jul 24, 2013 at 18:17:45 (UTC)
Goto Top
Hi Endoro,

danke für die schnelle Antwort!
So ähnlich hatte ich es bereits.
Allerdings möchte ich nur nach dem String Knopfloch suchen, um dadurch die Zeilennummer zu erhalten
und dann die zwei Zeichenfolgen ersetzen. (Die Zahl hinter Knopfloch darf nicht im Suchstring enthalten sein,
weil sie immer unterschiedlich ist.)
Gibt es denn nicht so etwas wie ne Wildcard? Knopfloch* funktioniert leider nicht. face-sad