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

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

Member: Friemler
Friemler Jan 26, 2013 updated at 17:06:50 (UTC)
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
Member: Screenactive
Screenactive Jan 26, 2013 at 17:16:31 (UTC)
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>
Member: Friemler
Friemler Jan 26, 2013 updated at 17:47:52 (UTC)
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
Member: Screenactive
Screenactive Jan 26, 2013 at 17:58:09 (UTC)
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%
Member: Friemler
Friemler Jan 26, 2013 at 18:04:17 (UTC)
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...
Member: Screenactive
Screenactive Jan 26, 2013 at 18:07:12 (UTC)
Goto Top
Vielen dank für deine hilfe!!!
Member: Friemler
Friemler Jan 26, 2013 at 19:42:49 (UTC)
Goto Top
Dann setze bitte noch den Beitrag auf gelöst.