Batch in XML Text ändern per Script

GeForce4

Lieutenant
Registriert
Mai 2002
Beiträge
513
Das Ziel ist es aus einer XML Datei einige Strings zu ersetzen. Genauer geht es darum Pfade für eine Konfigurationsdatei zu ändern. Diese Strings sollten dann in der Originaldatei überschrieben und im gleiche Format (UTF-8) gespeichert werden. Der restliche Text sollte unangetastet bleiben.

Was ich bis jetzt probiert habe:
Batch Datei welche zuerst die Strings ersetzt und anschliessend die Umlaute korrigiert, da diese sonst verworfen werden:
chcp 1252
powershell -Command "(gc Default.prx) -replace 'C:\Programme', 'C:\Program Files (x86)' | Out-File Default.prx"
powershell -Command "(gc Default.prx) -replace 'ü', 'ü' | Out-File Default.prx"
powershell -Command "(gc Default.prx) -replace 'ä', 'ä' | Out-File Default.prx"
powershell -Command "(gc Default.prx) -replace 'ö', 'ö' | Out-File Default.prx"
@pause

Das Problem hierbei ist, dass das Programm die Konfiguraitonsdatei nichtmehr lesen kann. Die ursprüngliche Konfig ist im UTF-8 Format abgespeichert und ich bin mir nicht sicher ob dies so bleibt mit diesem Script. Kdiff ergibt, dass zwar der Text der Änderung entspricht, aber die Dateigrösse verdoppelt sich.

Ich wäre froh um jegliche Hilfe :)
 
Schonmal "Out-File -Encoding utf8" probiert?
 
Danke für den Tipp, leider funktioniert dies aber nicht. Das Resultat bleibt beim Alten. Im Notepad ++ wird beim Originalfile "eXtensible Markup Language file" angegeben und bei der Kopie nach dem Script "Normal text file"
 
Ich würde das so machen: (Get-Content -Path "textfile.txt") | ForEach-Object {$_ -Replace "blah", "blubb"} | Set-Content -Path "textfile.txt"
 
Zurück
Oben