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
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
Please also mark the comments that contributed to the solution of the article
Content-Key: 148950
Url: https://administrator.de/contentid/148950
Printed on: May 4, 2024 at 09:05 o'clock
13 Comments
Latest comment
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