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

Printed on: April 20, 2024 at 02:04 o'clock

Member: Friemler
Friemler Nov 05, 2014 at 17:22:37 (UTC)
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
Member: colinardo
colinardo Nov 05, 2014 updated at 18:03:52 (UTC)
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
Member: KingPick
KingPick Nov 06, 2014 at 06:53:34 (UTC)
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