screenactive
Goto Top

Wert aus einer XML datei auslesen und als parameter an msiexec befehl übergeben

Hallo Zusammen,

ich möchte gerne einen bestimmten wert aus einer XML datei auslesen und an einer bestimmten stelle eines batch befehls wieder einfügen.

Beipiel:

Das XML file liegt an einem fest definierten ort auf der festplatte

C:\xml\test\test.xml

In dem file gibt es mehrere container, die zeile wo der container steht kann unterschiedlich sein. Der benötigte container enthält eine identnummer.

<ID>8012388840234</ID>

Jetzt wird ein msi file ausgeführt an das der wert übergeben werden soll.

msiexec.exe software.msi /i /qn IDENTCODE=8012388840234

Hat jemand eine ahnung wie man das am besten angeht?

Content-Key: 197698

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

Ausgedruckt am: 29.03.2024 um 10:03 Uhr

Mitglied: Friemler
Friemler 26.01.2013 aktualisiert um 18:06:50 Uhr
Goto Top
Hallo Screenactive,

aus den Infos oben werde ich nicht schlau. Dein Problem kann ja nicht sein, die ID 8012388840234 zu finden, sondern einen bestimmten Container, der eine ID enthält, ZUM BEISPIEL 8012388840234. Woran erkennt man denn diesen Container? Etwas mehr Infos zum Aufbau der XML-Datei musst Du schon liefern.

Gruß
Friemler
Mitglied: Screenactive
Screenactive 26.01.2013 um 18:16:31 Uhr
Goto Top
Hi Friemler,

so in etwas könnte das XML file aussehen. Der container heisst z.b. "ID" und enthält eine indivuelle nummer die ich im nächsten step an einen msiexec befehle übergeben möchte.

<serial>123</serial>
<ID>8012388840234</ID>
Mitglied: Friemler
Friemler 26.01.2013 aktualisiert um 18:47:52 Uhr
Goto Top
Hallo Screenactive,

teste mal folgendes:
@echo off & setlocal

set "InFile=C:\xml\test\test.xml"  
set "ContainerName=ID"  

for /f "tokens=2 delims=^<^>	 " %%a in ('findstr /i /r /c:"<%ContainerName%>[0-9]*</%ContainerName%>" "%InFile%"') do (  
  set "ID=%%a"  
)

if "%ID%" neq "" (  
  echo %ID%
) else (
  echo Container nicht gefunden
)

Gruß
Friemler
Mitglied: Screenactive
Screenactive 26.01.2013 um 18:58:09 Uhr
Goto Top
Perfekt, das ist es!!! Und wie kann ich den ausgelesenen wert jetzt an einer anderen stelle im script hinzufügen. Ich brauch den wert für ein msi packet.

@echo off & setlocal

set "InFile=C:\TEMP\TEST\XML\test.xml"  
set "ContainerName=IDCODE"  

for /f "tokens=2 delims=^<^> " %%a in ('findstr /i /r /c:"<%ContainerName%>[0-9]*</%ContainerName%>" "%InFile%"') do (  
  set "IDCODE=%%a"  
)

if "%IDCODE%" neq "" (  
  echo %IDCODE%
) else (
  echo Container nicht gefunden
)

msiexec /i application.msi IDCODE=%IDCODE%
Mitglied: Friemler
Friemler 26.01.2013 um 19:04:17 Uhr
Goto Top
Zitat von @Screenactive:
Und wie kann ich den ausgelesenen wert jetzt an einer anderen stelle im script hinzufügen.

Die Frage hast Du doch oben schon beantwortet...
Mitglied: Screenactive
Screenactive 26.01.2013 um 19:07:12 Uhr
Goto Top
Vielen dank für deine hilfe!!!
Mitglied: Friemler
Friemler 26.01.2013 um 20:42:49 Uhr
Goto Top
Dann setze bitte noch den Beitrag auf gelöst.