jjschumacher
Goto Top

Inhalt einer .xml Datei ändern mit Batch File

Hallo Zusammen,

Ich habe eine kleine Datei activeSite.xml mit folgendem Inhalt:

<?xml version="1.0" encoding="utf-8"?> 
<iltisap version="1"> 
  <activeSite value="ANLAGE1" /> 
</iltisap>

Diese würde ich gerne mit einem .bat (Batch) File wie folgt ändern:
<activeSite value="ANLAGE1" />  
soll in z.B.
<activeSite value="ANLAGE2" />  
geändert werden.

Gibt es einen einfachen weg diesen Parameter zu ändern?

Habe an sed ' gedacht aber kenne mich leider nicht so gut aus...

Danke und viele Grüsse,
Jonas

Content-Key: 377417

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

Printed on: April 25, 2024 at 14:04 o'clock

Member: colinardo
colinardo Jun 18, 2018 updated at 14:55:04 (UTC)
Goto Top
Servus Jonas, willkommen auf Administrator.de!
Kein Problem, Pfad und Wert anpassen, fertig.
@echo off
set "file=D:\Daten\activeSite.xml"  
powershell -Executionpolicy Bypass -NoProfile -Command "$xml = [xml](gc '%file%'); $xml.iltisap.activeSite.value = 'ANLAGE2';$xml.Save('%file%')"  
Grüße Uwe
Member: erikro
erikro Jun 18, 2018 at 14:55:27 (UTC)
Goto Top
Moin,

nimm Powershell. Dann wird alles ganz einfach:

[xml]$activeSite = get-content .\activeSite.xml 
$activeSite.iltisap.activesite.value = "Anlage2"  
$activeSite.save("activeSite.xml")  

hth

Erik
Member: JJSchumacher
JJSchumacher Jun 18, 2018 at 15:03:18 (UTC)
Goto Top
Hi Uwe,

Wow vielen Dank für die super schnelle Antwort.
Habe es gerade mal ausprobiert und deine commands in ein .bat file gespeichert bei mir kommt leider beim ausführen folgende Meldung:

'powershell' is not recognized as an internal or external command, operable program or batch file.

Habe es auf einem Windows Server 2008 versucht... mach ich da noch was falsch...

Sorry bin absoluter Anfänger...

Danke und viele Grüsse,
Jonas
Member: colinardo
colinardo Jun 18, 2018 updated at 15:07:44 (UTC)
Goto Top
Zitat von @JJSchumacher:
nem Windows Server 2008 versucht... mach ich da noch was falsch...
Joa, auf der alten Kiste ist die Powershell noch nicht per default installiert.
Enabling PowerShell on Windows Server 2008
Member: JJSchumacher
JJSchumacher Jun 18, 2018 at 15:10:41 (UTC)
Goto Top
Danke für den Tipp, leider bin ich auf einer gehärteten Windows Server 2008 Version und verfüge nicht über die rechte dies zu ändern.
Schade, wär wirklich eine sehr gute Lösung gewesen.
Member: colinardo
colinardo Jun 18, 2018 updated at 15:37:09 (UTC)
Goto Top
leider bin ich auf einer gehärteten Windows Server 2008 Version
Als Anfänger wohl auch gut so, duck und wech ... face-wink.
Wenn du willst kannst du das auch per VBS machen. Kurze Rückmeldung ob du das wenigstens darfst und Code kommt.
Member: JJSchumacher
JJSchumacher Jun 18, 2018 at 15:15:04 (UTC)
Goto Top
Habe es gefunden, scheint aktiviert zu sein.
In was für ein File (Ext) muss ich das script abspeichern?

Danke und viele Grüsse,
Jonas
einstellung
Member: colinardo
colinardo Jun 18, 2018 updated at 15:22:36 (UTC)
Goto Top
Das ist nur die ISE nicht Powershell selbst, aber wenn die ISE installiert ist und du sie aufrufen kannst ist die Powershell installiert , dann ist sie entweder deaktiviert oder nicht im PATH eingetragen, dann musst du stattdessen den kompletten Pfad zur powershell.exe im Skript angeben
"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
In was für ein File (Ext) muss ich das script abspeichern?
Normal als *.bat oder *.cmd. Das Skript packt einfach nur die Powershell-Befehle in eine Batch-Zeile das was du ja in deiner Frage wolltest.
Member: colinardo
colinardo Jun 18, 2018 updated at 15:37:31 (UTC)
Goto Top
Falls du es wider erwarten damit nicht geregelt bekommst, hier das ganze noch als VBS:
Code in Textdatei mit der Endung *.vbs speichern, Pfad und Wert anpassen und Doppelklick.
Dim path,xmldoc,node
path = "D:\activeSite.xml"  
Set xmldoc = CreateObject("msxml2.domdocument")  
xmldoc.async = False
xmldoc.load path
Set node = xmldoc.selectSingleNode("/iltisap/activeSite")  
if not node is nothing then
    node.attributes.getNamedItem("value").text = "ANLAGE2"  
    xmldoc.save path
end if
MsgBox "Fertig"  
Die "MsgBox" in der letzten Zeile ist nur für deinen Test damit du weist das das Skript ausgeführt wurde (kannst du hinterher raus nehmen).

Generell gilt die Devise: XML-Dateien sollte man nur wie oben mit einem XML-Parser verändern. String-Replace wirklich nur in Ausnahmefällen wenn es nicht anders geht.

Viel Erfolg.
Grüße Uwe
Member: JJSchumacher
JJSchumacher Jun 19, 2018 at 06:48:15 (UTC)
Goto Top
Das funktioniert perfekt, vielen Dank.

Absolut genialer Support hier, gefällt mir super. face-smile

Wünsche euch noch eine schöne Woche und bis bald.

LG Jonas