Backslash mit maskierten (doppelten) Backslash in Textdatei ersetzen
Hallo.
Hier habe ich schon einmal gefragt, wie man Textstellen per Batch-Script in einer Textdatei austauscht.
Das klappt wunderbar... bis auf ein neues Problem:
Aus einem Backslash soll ein maskierter, also doppelter Backslash werden.
Leider macht er aus einem nicht zwei sondern vier!
Erklären könnte ich mir das so:
Es wird der Backslash gefunden und durch zwei ersetzt.
Das nächste gefundene Zeichen ist (jetzt!) ja auch ein Backslash, der wiederrum ersetzt wird... usw.
Als Zwischenlösung habe ich das auch in zwei Schritten/Aufrufen versucht.
Soll heißen, ich habe den Backslash erst durch eine eigene, eindeutige Zeichenkette ersetzt und diese im zweiten Schritt durch den doppelten Backslash... funktioniert allerdings auch nicht?
<KORREKTUR> Die Zwischenlösung hat doch funktioiniert, hatte noch einen anderen Fehler im Script.
Wie kann ich das verhindern?
Leider sind mir zum Zeitpunkt des Austausches die Zeichen vor und/oder nach dem vorhandenen Backslash nicht bekannt, sodass ich diese nicht in mein Suchmuster
mit aufnehmen kann...
Danke für Eure Hilfe,
WiSch
Hier habe ich schon einmal gefragt, wie man Textstellen per Batch-Script in einer Textdatei austauscht.
Das klappt wunderbar... bis auf ein neues Problem:
Aus einem Backslash soll ein maskierter, also doppelter Backslash werden.
Leider macht er aus einem nicht zwei sondern vier!
Erklären könnte ich mir das so:
Es wird der Backslash gefunden und durch zwei ersetzt.
Das nächste gefundene Zeichen ist (jetzt!) ja auch ein Backslash, der wiederrum ersetzt wird... usw.
Als Zwischenlösung habe ich das auch in zwei Schritten/Aufrufen versucht.
Soll heißen, ich habe den Backslash erst durch eine eigene, eindeutige Zeichenkette ersetzt und diese im zweiten Schritt durch den doppelten Backslash... funktioniert allerdings auch nicht?
<KORREKTUR> Die Zwischenlösung hat doch funktioiniert, hatte noch einen anderen Fehler im Script.
Wie kann ich das verhindern?
Leider sind mir zum Zeitpunkt des Austausches die Zeichen vor und/oder nach dem vorhandenen Backslash nicht bekannt, sodass ich diese nicht in mein Suchmuster
mit aufnehmen kann...
Danke für Eure Hilfe,
WiSch
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 158390
Url: https://administrator.de/contentid/158390
Ausgedruckt am: 22.11.2024 um 11:11 Uhr
3 Kommentare
Neuester Kommentar
moin,
sinnvoll wäre es deinen umgebauten Bastla zu kennen...
Works as designed....
Gruß
sinnvoll wäre es deinen umgebauten Bastla zu kennen...
@echo off & setlocal
set "Datei=GroupInfo_2.txt"
set R=%temp%\Replace5.vbs
>%R% echo F = WScript.Arguments(0)
>>%R% echo Set fso = CreateObject("Scripting.FileSystemObject")
>>%R% echo T = fso.OpenTextFile(F).ReadAll
>>%R% echo T = Replace(T, "\", "\\")
>>%R% echo fso.CreateTextFile(F).Write T
for %%f in ("%Datei%") do cscript //nologo %R% "%%f"
Works as designed....
Gruß
Hallo WiSch!
Nach dem ursprünglichen Muster funktioniert
bei mir.
Grüße
bastla
[Edit] @t-mo: Bist Du aber schnell ... [/Edit]
Nach dem ursprünglichen Muster funktioniert
@echo off & setlocal
set "Datei=Datei.txt"
set R=%temp%\ReplaceIt.vbs
>%R% echo F = WScript.Arguments(0)
>>%R% echo Set fso = CreateObject("Scripting.FileSystemObject")
>>%R% echo T = fso.OpenTextFile(F).ReadAll
>>%R% echo T = Replace(T, "\", "\\")
>>%R% echo fso.CreateTextFile(F).Write T
cscript //nologo %R% "%Datei%"
Grüße
bastla
[Edit] @t-mo: Bist Du aber schnell ... [/Edit]