Suchen und Ersetzen per Batch
Hallo zusammen,
ich suche eine Lösung, um innerhalb einer Textdatei einen Wert zu suchen und anschließend zu ersetzen. Ich bin dabei auf diese Frage gestoßen:
Alte Frage
Das ganze funktioniert allerdings nur, solange im Such-/Ersetzungstext kein "=" enthalten ist. Ich würde daher oben schon einmal die Suchausdrücke in
ändern, aber das klappt trotzdem noch nicht ganz...
Wie müsste man den Beispielcode abändern? Ich stehe gerade bzgl. des Escapens etwas auf dem Schlauch...
Viele Grüße
Michael
ich suche eine Lösung, um innerhalb einer Textdatei einen Wert zu suchen und anschließend zu ersetzen. Ich bin dabei auf diese Frage gestoßen:
Alte Frage
@echo off & setlocal enabledelayedexpansion
set "Datei=Test.txt"
set "t=Temp.tmp"
set "Suchen1=aaa"
set "Ersetzen1=bbb"
set "Suchen2=ccc"
set "Ersetzen2=ddd"
if exist "%t%" del "%t%"
for /f "delims=" %%i in ('findstr /n $ "%Datei%"') do set "Line=%%i" & call :ProcessLine
move "%t%" "%Datei%"
goto :WEITER_IM_BATCH
:ProcessLine
for /f "tokens=1* delims=:" %%a in ("%Line%") do set "L=%%b"
if not defined L >>"%t%" echo\& goto :eof
set WriteLine1=!L:%Suchen1%=%Ersetzen1%!
set WriteLine2=!WriteLine1:%Suchen2%=%Ersetzen2%!
>>"%t%" echo !WriteLine2!
goto :eof
:WEITER_IM_BATCH
.......
Das ganze funktioniert allerdings nur, solange im Such-/Ersetzungstext kein "=" enthalten ist. Ich würde daher oben schon einmal die Suchausdrücke in
set "Suchen1=aaa^^=xyz"
set "Ersetzen1=bbb^^=zyx"
...
ändern, aber das klappt trotzdem noch nicht ganz...
Wie müsste man den Beispielcode abändern? Ich stehe gerade bzgl. des Escapens etwas auf dem Schlauch...
Viele Grüße
Michael
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 374126
Url: https://administrator.de/contentid/374126
Ausgedruckt am: 22.11.2024 um 12:11 Uhr
5 Kommentare
Neuester Kommentar
Wenn immer du Textersetzungen mit Batch vornehmen willst, du das aber einigermaßen idiotensicher tun willst/musst, dann mach es nicht mit Batch Auch andere Sprachen, wie Powershell, bieten dir ein Kommandozeileninterface und lassen sich in Batchscripts einbinden. Ebenfalls möglich sind andere Windows Scripts, wie JScript, verwurstet in diesem Tool:
JREPL.BAT
Steffen
JREPL.BAT
Steffen
Zitat von @rubberman:
Wenn immer du Textersetzungen mit Batch vornehmen willst, du das aber einigermaßen idiotensicher tun willst/musst, dann mach es nicht mit Batch Auch andere Sprachen, wie Powershell, bieten dir ein Kommandozeileninterface und lassen sich in Batchscripts einbinden. Ebenfalls möglich sind andere Windows Scripts, wie JScript, verwurstet in diesem Tool:
JREPL.BAT
Wenn immer du Textersetzungen mit Batch vornehmen willst, du das aber einigermaßen idiotensicher tun willst/musst, dann mach es nicht mit Batch Auch andere Sprachen, wie Powershell, bieten dir ein Kommandozeileninterface und lassen sich in Batchscripts einbinden. Ebenfalls möglich sind andere Windows Scripts, wie JScript, verwurstet in diesem Tool:
JREPL.BAT
Oder einfach das richtige Werkzeug dafür nehmen, wie z.B. sed.
lks
Zitat von @rubberman:
Natürlich. Abhängig von der Umgebung (3rd party erlaubt/erwünscht, soll on-the-fly auch auf anderen Rechnern laufen etc.).
Natürlich. Abhängig von der Umgebung (3rd party erlaubt/erwünscht, soll on-the-fly auch auf anderen Rechnern laufen etc.).
Das sind Randbedingungen, die man nennen sollte, um zu dem richtigen Lösungsweg zu gelangen.
lks