snowdream
Goto Top

Suchen und Ersetzen mit Sonderzeichen

Hallo zusammen,

ich brauche mal wieder eure Hilfe. Ich hab hier im Forum schon einiges gelernt und auch schon verschiedene Codeschnipsel für mich erfolgreich umgebogen.
Jetzt komme ich allerdings nicht weiter.

Ich möchte in einer Datei einen "Search-String" mit einem "Replace-String" ersetzen. Das funktioniert auch soweit ganz gut, allerdings nur wenn kein "&" im String

enthalten ist. Die Teilstrings sind leider mit einem "&" verknüpft.

test.txt => aaaaa&bbbbb&ccccc&ddddd

  set file=C:\test.txt
  set string1=aaaaa
  set string2=bbbbb
  set string3=ccccc
  set string4=ddddd
  set string5=eeeee
  set string6=fffff
  set string7=ggggg
  set string8=hhhhh

  set "search=%string1%^&%string2%^&%string3%^&%string4%"  
  set "replace=%string5%^&%string6%^&%string7%^&%string8%"  

::bis hier hin sieht es noch gut aus
  echo %search%
  echo %replace%
  pause

::codeschipsel, hier aus dem forum
::suchen und ersetzen in datei wird nicht ausgeführt
  set R=%temp%\Replacer.vbs 
  >%R% echo Set fso=CreateObject("Scripting.FileSystemObject"): T=fso.OpenTextFile("%file%").ReadAll: fso.CreateTextFile("%file%",True).Write Replace(T,"%search%","%replace%")   
  cscript //nologo %R%

Ich hoffe jemand kann helfen!
Vielen Dank im Voraus

Content-ID: 288405

Url: https://administrator.de/contentid/288405

Ausgedruckt am: 22.11.2024 um 16:11 Uhr

emeriks
emeriks 14.11.2015 um 14:33:26 Uhr
Goto Top
Hi,
warum machst Du das nicht komplett in VBscript?!
Const filepath=C:\test.txt
Const string1=aaaaa
Const string2=bbbbb
Const string3=ccccc
Const string4=ddddd
Const string5=eeeee
Const string6=fffff
Const string7=ggggg
Const string8=hhhhh

searchstring= string1 & "&" & string2 & "&" & string3 & "&" & string4  
replacestring= string5 & "&" & string6 & "&" & string7 & "&" & string8  

Wscript.Echo searchstring
Wscript.Echo replacestring
pause

Set fso=CreateObject("Scripting.FileSystemObject")  
T=fso.OpenTextFile(filepath).ReadAll
Wscript.Sleep 500
fso.CreateTextFile(filepath, True).Write Replace(T, searchstring, replacestring) 

E.
snowdream
snowdream 14.11.2015 aktualisiert um 15:18:38 Uhr
Goto Top
weil ich von VB absolut keine Ahnung habe und mein Problem nur ein Teil des Batch-Scriptes darstellt. Wie könnte ich denn dem VB-Script meine Variablen übergeben, geht das?
Endoro
Lösung Endoro 14.11.2015, aktualisiert am 16.11.2015 um 11:32:20 Uhr
Goto Top
Hey,
Nimm mal in Zeile 11+12 die Carets vor den "&"-Zeichen raus.
Gruß, Endoro
snowdream
snowdream 14.11.2015 aktualisiert um 16:04:27 Uhr
Goto Top
Wenn ich das Ampersand (&) nicht escape, dann zeigt er mir die Variable "search" nicht mehr an
EDIT: aber es geht, es wird korrekt gesucht und ersetzt
aber warum kann ich "search" nicht auf dem Bildschirm ausgeben? So hab ich ja keine Kontrolle was in der Variablen steht. Kann das vielleicht noch einer erklären?

Danke Endoro
bastla
Lösung bastla 15.11.2015, aktualisiert am 16.11.2015 um 11:32:24 Uhr
Goto Top
Hallo snowdream!
aber warum kann ich "search" nicht auf dem Bildschirm ausgeben?
"&" dient in Batch dazu, Anweisungen zu verknüpfen - daher wird ein
echo aaaaa&bbbbb&ccccc&ddddd
so interpretiert:Gib zunächst "aaaaa" auf dem Bildschirm aus und führe danach die Anweisungen "bbbbb", "ccccc" und "ddddd" aus ...
So hab ich ja keine Kontrolle was in der Variablen steht.
Wenn Du nur eine Kontroillausgabe brauchst, setze die Variable einfach unter Anführungszeichen, also:
echo "%search%"
Grüße
bastla
snowdream
snowdream 16.11.2015 um 11:31:34 Uhr
Goto Top
OK, ich Danke euch für die Hilfe und die Erklärung.