afrodyte

Kombination von Suchen und Ersetzen

Hallo, Dank der guten Beiträge im Forum habe ich die benäötgten Befehle zum Erstellen einer Batchdatei zum Suchen und Ersetzen von Dateiinhalten bereits gefunden

In einer Datei möchte ich mehrere Werte ersetzen. Dazu gehören auch Anführungszeichen.

1.Zweck: Wert ersetzen
@echo off & setlocal enabledelayedexpansion
set "Datei=M:\Verzeichnis\datei.txt"
set "Von=w"
set "Nach=x"
set "t=%temp%\datei.tmp"
if exist "%t%" del "%t%"
for /f "usebackq delims=" %%i in ("%Datei%") do set "Line=%%i" & set Line=!Line:%Von%=%Nach%! & echo !Line!>>"%t%"
move /y "%t%" "%Datei%

Diese Befehlskette funktioniert einwandfrei.

2. Zweck: Anführungszeichen entfernen
for /f "delims=" %%i in (datei.txt) do ( 
set "line=%%i" 
echo !line:"=! >>daten_ready.txt
)

Diese Befehlskette funktioniert ebenfalls, wenn ich sie in einer sepraten Batchdatei definiere.
Packe ich sie aber mit den unter 1 genanten Befehlen in eine Datei, werden die Anführungszeichen nicht ersetzt.

Was ist falsch?
Verweise ich nicht korekt auf die bereits geänderte Datei?

Ich freue mich über Hilfe.
Lieben Gruß
afrodyte
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 114756

Url: https://administrator.de/forum/kombination-von-suchen-und-ersetzen-114756.html

Ausgedruckt am: 11.05.2025 um 19:05 Uhr

Biber
Biber 27.04.2009 um 19:45:20 Uhr
Goto Top
Moin afrodyte,

ich weiss nicht, wieso bei Dir die gepostete zweite (dreizeilig formatierte) Zeile zu funktionieren scheint.
Soweit ich bisher geglaubt hatte herausgefunden zu haben MUSS das zu ersetzende Anführungszeichen im %var:alt=neu% -Befehl mit einem Caret maskiert werden.
Demo am CMD-Prompt
>type text123.txt
test12 "in gänsefüßchen" ende test12  
test112 "in gänsefüßchen" ende test112  
test112 "in whatever" ende test112  

(=19:41:42  D:\temp=)
>@for /f "delims=" %i in (text123.txt) do @(set "Line=%i" & @echo !line:^"=!)  
test12 in gänsefüßchen ende test12
test112 in gänsefüßchen ende test112
test112 in whatever ende test112
-- und jetzt ohne Caret
>@for /f "delims=" %i in (text123.txt) do @(set "Line=%i" & @echo !line:"=!)  
Mehr?

Das einzige, was ich hier zeigen wollte ist das [@echo !line:^"=!] in der FOR /F -Anweisung.

Überprüf bitte noch einmal, ob Deine Variante 2 wirklich einwandfrei läuft.

Grüße
Biber
afrodyte
afrodyte 28.04.2009 um 11:37:41 Uhr
Goto Top
Hi Biber,

die Variante 2 funktioniert nicht. Mit einer Testdatei hatte ich es hingekriegt, aber dann klappte (nach dem Post) nixi mehr.

Kannst du mir bitte, bitte diesen Abschnitt noch einmal so korrigieren, dass er funktionieren müsste:

for /f "delims=" %%i in (datei.txt) do (
set "line=%%i"
echo !line:"=! >>daten_ready.txt
)

Merci und Gruß
afrodyte
Biber
Biber 28.04.2009 um 11:49:03 Uhr
Goto Top
Moin afrodyte,

in etwa so:

@echo off & setlocal
:: ...
for /f "delims=" %%i in (datei.txt) do (  
   set "line=%%i"  
   echo !line:^"=! >>daten_ready.txt  
)
[ eigentlich also nur das Caret ("^") ergänzt ]

Grüße
Biber
afrodyte
afrodyte 28.04.2009 um 16:56:41 Uhr
Goto Top
Danke Biber face-smile

Das war definitiv zu einfach. Jetzt flutscht es wie gewünscht.

Gruß
afrodyte