addy0604

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
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 356767

Url: https://administrator.de/forum/per-batch-ein-datum-in-einer-xml-datei-auf-das-aktuelle-datum-aktualisieren-356767.html

Ausgedruckt am: 04.05.2025 um 05:05 Uhr

134464
Lösung 134464 01.12.2017 aktualisiert um 16:49:29 Uhr
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
addy0604
addy0604 01.12.2017 um 16:35:25 Uhr
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
134464
134464 01.12.2017 aktualisiert um 16:43:46 Uhr
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.
addy0604
addy0604 01.12.2017 um 17:02:42 Uhr
Goto Top
Jaaaa, funktioniert super....
Vielen Dank face-smile

Grüße
Matthias