Batch - Strings ersetzen (mit Sonderzeichen)
Batch - Strings ersetzen (mit Sonderzeichen)
Hallo allerseits,
ich möchte per batch eine config-datei öffnen, Strings suchen und an diese dann Werte anhängen.
Das batch läuft auch, nur leider gibt es Probleme mit den Sonderzeichen, die ich einfach nicht bewerkstelligt bekomme.
Hier mein Quelltext:
para.txt:
Klappt alles wunderbar, nur, dass im Anschluss "printer_name = 9966558=" und nicht "printer_name = 9966558" in der Datei "para.txt" steht.
Wenn ich set "zuersetzen=printer_name = " eingebe, gibt er mir sogar "=printer_name = 9966558=" aus.
Hat zufällig jemand eine Idee?
Vielen Dank schonmal im Vorraus für eure Bemühungen
Hallo allerseits,
ich möchte per batch eine config-datei öffnen, Strings suchen und an diese dann Werte anhängen.
Das batch läuft auch, nur leider gibt es Probleme mit den Sonderzeichen, die ich einfach nicht bewerkstelligt bekomme.
Hier mein Quelltext:
@echo off & setlocal enabledelayedexpansion
set "Datei=para.txt"
set "zuersetzen=printer_name"
set "ersetzenmit=printer_name = 9966558"
set "t=%temp%\text.tmp"
if exist "%t%" del "%t%"
for /f "usebackq delims=" %%i in ("%Datei%") do set "Line=%%i" & set Line=!Line:%zuersetzen%=%ersetzenmit%! & echo !Line! >> "%t%"
move /y "%t%" "%Datei%"
para.txt:
printer_name =
Klappt alles wunderbar, nur, dass im Anschluss "printer_name = 9966558=" und nicht "printer_name = 9966558" in der Datei "para.txt" steht.
Wenn ich set "zuersetzen=printer_name = " eingebe, gibt er mir sogar "=printer_name = 9966558=" aus.
Hat zufällig jemand eine Idee?
Vielen Dank schonmal im Vorraus für eure Bemühungen
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 148950
Url: https://administrator.de/forum/batch-strings-ersetzen-mit-sonderzeichen-148950.html
Ausgedruckt am: 13.04.2025 um 12:04 Uhr
13 Kommentare
Neuester Kommentar

moin
Zeile 4
Dann klappert das auch - obwohl ohne echo off.....
Gruß
Zeile 4
set "ersetzenmit=printer_name ^= 9966558"
Dann klappert das auch - obwohl ohne echo off.....
Gruß
Hallo kali64 und willkommen im Forum!
Versuch es so:
[Edit] Zeile 7 noch etwas "behübscht"
[/Edit]
Grüße
bastla
Versuch es so:
@echo off & setlocal
set "Datei=para.txt"
set "zuersetzen=printer_name ="
set "ersetzenmit=printer_name ^= 9966558"
set "t=%temp%\text.tmp"
del "%t%" 2>nul
for /f "usebackq delims=" %%i in ("%Datei%") do (echo %%i|findstr /b /c:"%zuersetzen%">nul && echo %ersetzenmit%||echo %%i)>>"%t%"
move "%t%" "%Datei%"
Grüße
bastla
Hallo kali64!
Ich habe mit
als "para.txt" und der oben stehenden (wieder heruntergeladenen) Batch-Version folgendes Ergebnis erhalten:
Auch wenn ich das (ohnehin unnötige) "^" in Zeile 4 entferne, funktioniert es weiterhin ...
Wenn Du Timos anderen Tipp (das Vermeiden von "
[Edit] ... zB, dass es zwischen "
Grüße
bastla
Ich habe mit
printer
printer_name =
printer_location =
printer
printer_name = 9966558
printer_location =
Wenn Du Timos anderen Tipp (das Vermeiden von "
echo off
") umsetzt, solltest Du dem Fehler leichter auf die Spur kommen ...[Edit] ... zB, dass es zwischen "
nul
" in Zeile 6 und "for
" in Zeile 7 eine Zeilenschaltung geben sollte ... [/Edit]Grüße
bastla
Moin bastla,
Du würdest den Fehler bestimmt sofort finden, wenn kali64 seine Version postet und du diese herunterlädst...
Grüße
Biber
Zitat von @bastla:
Ich habe mit [...] der oben stehenden (wieder heruntergeladenen) Batch-Version folgendes Ergebnis erhalten:
Ich habe mit [...] der oben stehenden (wieder heruntergeladenen) Batch-Version folgendes Ergebnis erhalten:
Du würdest den Fehler bestimmt sofort finden, wenn kali64 seine Version postet und du diese herunterlädst...
Grüße
Biber