kingpick
Goto Top

Wert in .xml per Batch ändern

Hallo an alle,

ich stehe leider seit kurzem vor einem "kleinen" Problem.

Zuerst: Ja ich weiß so ein ähnliches Thema gibt es hier schon, aber da kann ich keinen Überblick behalten, bzw. für meine Frage is da keine direkte Lösung dabei.

So nun zu meinem Problem...

und zwar hab ich die Aufgabe bekommen, eine bestimmte Zeile innerhalb einer XML Datei zu ändern, bzw für mehrere innerhalb eines Ordners.

<?xml version="1.0" encoding="UTF-8"?>
-<Root ICVersion="5.2f00" ICSenderLocation="CZ" ICSender="10" ICReceiverLocation="D" ICReceiver="1">-<Settings>


So sieht der Anfang der XML Dateien aus, die folgenden Infos sind irrelevant für meine Aufgabe (hoffe auch für die Batch).

Und zwar soll ich nun in der zweiten Zeile den Wert von ICSender="10" ... auf... ICSender="110" ändern.


Leider hänge ich da nun komplett in der Luft und weiß nichmal wie ich richtig anfangen soll...

Hoffe ihr könnt einem Ungläubigen erleuchten und ihn zurück auf den rechten Weg führen.

Leider bin ich noch recht frisch dabei und arbeite mich da erst richtig ein face-sad


Ich danke allen jetzt schonmal für die Hilfe!!

MfG KingPick

Content-Key: 253897

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

Ausgedruckt am: 28.03.2024 um 09:03 Uhr

Mitglied: Friemler
Friemler 05.11.2014 um 18:22:37 Uhr
Goto Top
Hallo KingPick,

Batchscript ist für Diese Aufgabe ungeeignet. Erstens enthalten XML-Dateien viele Zeichen, die vom Batchscript-Interpreter als auszuführender Code angesehen werden (z.B. < und >), was ein zuverlässiges Parsen von XML-Dateien nahezu unmöglich macht. Zweitens kommt in Deinem Fall noch erschwerend hinzu, dass Deine XML-Datei laut Header in UTF-8 codiert ist, womit Batchscript nicht umgehen kann. Das macht sich bei Sonderzeichen bemerkbar, die einen Zeichencode größer als 127 haben.

Eine Alternative für Dich wäre z.B. VBScript unter Benutzung des MS XML-Parsers. Das (Google-)Stichwort hierzu wäre XMLDOM (siehe auch hier). Mit PowerShell lässt sich bestimmt auch was machen.

Da Du von einer "Aufgabe" sprichst, die im übrigen mit den o.g. Mitteln mit relativ geringem Aufwand lösbar ist, gehe ich mal davon aus, dass Dein Chef(?) herausfinden möchte, ob Du für eine bestimmte Tätigkeit bzw. Arbeitsstelle geeignet bist. Ich glaube, dass Du Dir selbst keinen Gefallen damit tust, Dir hier oder in einem anderen Forum eine Lösung basteln zu lassen und dann per Copy&Paste zu übernehmen. Du musst einfach lernen, Dich in neue Wissensbereiche einzuarbeiten und Problemlösungen selbst zu entwickeln, sonst wirst Du früher oder später in dem Job sowieso untergehen.

Gruß
Friemler
Mitglied: colinardo
colinardo 05.11.2014 aktualisiert um 19:03:52 Uhr
Goto Top
Hallo KingPick, Willkommen auf Administrator.de!
Schließe mich Friemler an, Batch ist für XML-Sachen einfach nicht gut geeignet!
Wenn dein File valides XML ist kannst du es z.B. mit Powershell so für alle XML-Dateien eines Ordners machen:
gci "C:\temp\*.xml" | %{  
    $xml = new-Object xml
    $xml.Load($_.Fullname)
    $xml.Root.IcSender = "110"  
    $xml.Save($_.Fullname)
}
oder wenn die XML-Datei "speziell" ist und nicht konform, dann so für alle XML-Dateien eines Ordners
gci "C:\temp\*.xml" | %{(gc $_.Fullname) -replace 'ICSender="10"','ICSender="110"' | out-file $_.FullName -Encoding utf8}  
Grüße Uwe
Mitglied: KingPick
KingPick 06.11.2014 um 07:53:34 Uhr
Goto Top
Danke dann werde schauen wie sich das lösen lässt.

Ne, ging nur darum das ich einiges per Batch bisher gelöst hab und ein Kollege daher meinte ob das so lösbar wäre. Da ich nicht weiterkam wollt ich nur mal eure Meinung wissen. Aber nun weiß ich ja das ich sowas lieber nicht per Batch mache face-smile