Bat... Knoteninhalt einer XML Datei laden?
das hier ist ein echt tolles Forum und besonders der Batch Bereich hat mir öfters weitergeholfen, jetzt brauche ich aber glaube ich aktive Hilfe :D
Es geht um folgendes:
ich habe eine XML Datei (data.xml), in der mehrere Knotenpunkte definiert sind. In der 8. Zeile ist der für mich wichtige Knoten <id>01</id> (immer eine zwei/dreistellige Zahl). Der Knotenpunkt ist normalerweise auch mit ein paar Lehrzeichen eingerückt, aber das könnte ich im Notfall entfernen, ansonsten muss der Aufbau der xml Datei so bleiben.
Jetzt würde ich mit der bat gerne diese eine Zahl (in dem Fall "01") einlesen und als Variable abspeichern. Weil ich hab eine weitere ausführliche bat Datei, die im Kopf eine oder mehrere id Werte hat (wie diese angegeben sind ist egal), und sollte dieser Wert da vorhanden sein, passt sie und muss ausgeführt werden, ansonsten eben nicht.
Was ich bisher habe:
Hiermit kann ich die komplette 8. Zeile auslesen:
@echo off
for /f "tokens=1,* delims=:" %%i in ('findstr /n $ data.xml') do @(
for /L %%a in (8,8,8) do @if %%i==%%a @echo %%j
)
pause
... und hiermit könnte ich so eine Zeile (wird hier direkt als var angegeben) zurechtschneiden - zumindest irgendwie ...
@echo off & setlocal
set "Von=<id>"
set "Bis=</id>"
set G=%temp%\GetPart.vbs
>%G% echo Set a=WScript.Arguments:T=a(0):Von=a(1):L=Len(Von):Bis=a(2):Start=InStr(T,Von):If Start^>0 Then Start=Start+L:Ende=InStr(Start,T,Bis)-Start:If Ende^>Start Then WScript.Echo Trim(Mid(T,Start,Ende))
set "var=<id>010101</id>"
set varNeu=
for /f "delims=" %%i in ('cscript //nologo %G% "%var%" "%Von%" "%Bis%"') do set "varNeu=%%i"
if defined varNeu (echo %varNeu%) else (echo Teistring konnte nicht gebildet werden!)
pause
Das Problem ist aber, das 1. keine Leerzeichen vor dem <id> akzeptiert werden und zweites leider keine Zahl unter 6 Stellen möglich ist, denn dann bekomm ich leider kein Ergebnis - nur dumm das ich es für eine 2-3 stellige Zahl brauche
Wenn dann die 2-3 stellige id Zahl als Variable vorhanden ist müsste ich sie mit der ersten Zeile einer ausführen.bat Detei vergleichen. Diese könnte so aussehen: 01,02,05,120,23
Sollte einer dieser Zahlen gleich meiner Variablen sein, so soll die ausführen.bat ausgeführt werden. In Actionscript würde ich das mit var.indexof(zeile1) lösen, geht das in einer Batch ähnlich?
Ich hoffe Ihr könnt mir da etwas auf die Sprünge helfen, etwas batch versteh ich ja noch, aber das geht leider weit über meinen Horizont
Gruß, maccoX
Content-ID: 159979
Url: https://administrator.de/contentid/159979
Ausgedruckt am: 04.11.2024 um 18:11 Uhr
vorab - merci für die Codeblöcke und den rest.
Dann eine Demo an der Dosbox im Ordner c:\script\xml
- Damit habe ich eine xml Datei zum spielen.
- Damit hole ich mir aus der erzeugten Datei die Zeile 8 und werte alles zwischen >< aus.
- mit
- erhalte ich (wie gewünscht) den Inhalt
Oder laufe ich grad über den falschen Abzweig nach Rom?
Gruß
auch ein blindes Korn opfert sich mal einem Huhn - oder so ähnlich
- grübel...
naja -wenn mein Dampfer auf dem richtigen Fluss in die gewünschte Richtung rudert....
- %tempo% wäre immer noch die Variable
- und der übersichthalber nehmen wir den gleichen Weg - wie oben
- damit hast du den kompletten Inhalt von der ersten Zeile