tera-x
Goto Top

Batch - Suche Zeile nach zwei Wörtern und kopiere den Text dazwischen in eine Variable

Hallo,

ich habe eine Configdadatei config.xml (XML/TXT) welche unter anderem folgenden Eintrag enthält

<test>blubber</test>

Ich möchte nun gerne den Text zwischen <test> </test> auslesen und in eine Variable speichern.
Danach möchte ich gerne den gespeicherten Wert an der gleichen Stelle durch einen neuen Text ersetzen.

Als Beispiel:

Aus
<test>blubber</test>
wird
<test>blabla</test>

Der Text zwischen <test> und </test> (in diesem Fall blubber) ist unbekannt und hat leider keine definierte Länge!

Alternativ wäre es auch möglich, wenn die komplette Zeile <test>blubber</test> gelöscht wird, wenn in der selben Zeile über eine Variable <test>blabla</test> hinzugefügt wird.

Ich habe mich schon durch verschiedene Seiten hier gekämpft, aber immer nur Lösungen gefunden, um einen bekannten Text durch einen neuen bekannten Text zu ersetzen.
Hier ist es aber leider so, dass ich erstmal den unbekanten Text finden muss um ihn dann durch einen bekannten Text zu ersetzen.

Eingebaut werden soll das in eine .bat unter Windows7 ohne (local)Adminrechte.
Lese- und Schreibrechte auf die Datei hat der Benutzer, auch ist bekannt, wo die Datei liegt.

Vielen Dank vorab schonmal für die Hilfe und Gruß
Tera-X

Content-Key: 306550

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

Ausgedruckt am: 29.03.2024 um 08:03 Uhr

Mitglied: 129413
Lösung 129413 08.06.2016 aktualisiert um 16:25:55 Uhr
Goto Top
@echo off
:: Pfad zur XML Datei
set "xmldatei=c:\config.xml"  
:: Tag in dem der Text ersetzt wird , Achtung: Case-Sensitive
set "xmltag=test"  
:: Neuer Text für den Inhalt
set "neuertext=Blabla"  
:: Ersetzung vornehmen
powershell -Executionpolicy ByPass -Command "$xml = [xml](gc '%xmldatei%'); $xml.SelectSingleNode('//%xmltag%').innerText = '%neuertext%'; $xml.Save('%xmldatei%')"  
Gruß skybird
Mitglied: Tera-X
Tera-X 09.06.2016 um 09:51:43 Uhr
Goto Top
Hallo skybird,

recht herzlichen Dank für deine Hilfe.
Die Powershell Funktion hat hier wunderbar funktioniert!

Gruß
Tera-X