addy0604
Goto Top

Per Batch ein Datum in einer XML-Datei auf das aktuelle Datum aktualisieren

Hallo Zusammen,

ich hab hier ein kleines Problem. Wird für euch wahrscheinlich ein Klacks sein, aber ich verzweifle hier seit Stunden.
Ich hab schon einige gute Ansätze hier gefunden, aber auf einen grünen Zweig bin ich leider noch nicht gekommen...

Ich habe eine kleine XML-Datei für eine Abfrage an einen Host.
Darin befindet sich auch das aktuelle Datum im Format JJJJ-MM-TT.
Momentan stelle ich mich jeden Tag hin, Rechtsklick -> Bearbeiten -> aktuelles Datum -> speichern -> zum Host schicken.
Geht das nicht auch automatisiert per Batch-Datei?
Das Datum bekomme ich ja mit %date:~6,4%-%date:~3,2%-%date:~0,2%, das wäre nicht das Problem.
Aber wie bekomme ich das an die richtige Stelle in die XML-Datei?

Das ist der Inhalt der Datei:
<?xml version="1.0" encoding="IBM850"?><MBd_O_Booking_Test_index><header>
<Version>1</Version></header><body><MAIN><AccountNumber>1234567890</AccountNumber><StartDate>2017-12-01</StartDate><SelectionIsOnBookingDate>1</SelectionIsOnBookingDate></MAIN></body></MBd_O_Booking_Test_index>

Alles in einer Zeile. Das Datum steht auch immer an der gleichen Position.
Man könnte ja theoretisch die 10 Zeichen zwischen 168. und 178. Stelle löschen und darin das aktuelle Datum einfügen.
Wäre das möglich?


Vielen Dank schon mal für das Kopf-zerbrechen ;)

Grüße
Matthias

Content-Key: 356767

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

Printed on: April 18, 2024 at 23:04 o'clock

Mitglied: 134464
Solution 134464 Dec 01, 2017 updated at 15:49:29 (UTC)
Goto Top
XML Dateien sollte man immer mit einem Parser bearbeiten und nicht als reine Strings behandeln.
@echo off
set "xmlfile=c:\pfad\datei.xml"  
Powershell -Executionpolicy ByPass -Command "$xml = New-Object XML; $xml.Load('%xmlfile%'); $xml.MBd_O_Booking_Test_index.body.MAIN.StartDate = (get-date).toString('yyyy-MM-dd'); $xml.Save('%xmlfile%')"  
Gruß @specht
Member: addy0604
addy0604 Dec 01, 2017 at 15:35:25 (UTC)
Goto Top
Hallo Specht,

vielen Dank für die schnelle Antwort.
Powershell ist natürlich auch ein guter Ansatz. Damit habe ich aber noch weniger Erfahrung als mit Batch-Dateien... sorry, bin ein Maus-Schubser... face-smile
In deinem Script hat das _index vor Booking_Test gefehlt. Hab ich aber flux nachgetragen.
Trotzdem kommt eine Fehlermeldung:
"StartDate" kann nicht festgelegt werden, da nur Zeichenfolgen als Werte zum Festlegen von XmlNode-Eigenschaften verwendet werden können.

klingt irgendwie nicht gut face-sad

Gruß
Matthias
Mitglied: 134464
134464 Dec 01, 2017 updated at 15:43:46 (UTC)
Goto Top
Sorry, Typos sind korrigiert. Hier geht's jetzt problemlos.
Powershell ist natürlich auch ein guter Ansatz
Das ist "Batch", nur mit etwas Powershell gewürzt face-wink.
Member: addy0604
addy0604 Dec 01, 2017 at 16:02:42 (UTC)
Goto Top
Jaaaa, funktioniert super....
Vielen Dank face-smile

Grüße
Matthias