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-Key: 288405

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

Printed on: April 26, 2024 at 13:04 o'clock

Member: emeriks
emeriks Nov 14, 2015 at 13:33:26 (UTC)
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.
Member: snowdream
snowdream Nov 14, 2015 updated at 14:18:38 (UTC)
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?
Member: Endoro
Solution Endoro Nov 14, 2015, updated at Nov 16, 2015 at 10:32:20 (UTC)
Goto Top
Hey,
Nimm mal in Zeile 11+12 die Carets vor den "&"-Zeichen raus.
Gruß, Endoro
Member: snowdream
snowdream Nov 14, 2015 updated at 15:04:27 (UTC)
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
Member: bastla
Solution bastla Nov 15, 2015, updated at Nov 16, 2015 at 10:32:24 (UTC)
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
Member: snowdream
snowdream Nov 16, 2015 at 10:31:34 (UTC)
Goto Top
OK, ich Danke euch für die Hilfe und die Erklärung.