Batch soll prüfen ob eine XML-Datei vorhanden ist und dann mehrere Informationen auslesen und und in eine LOG-Datei schreiben
Hallo,
ich bin neu hier und brauche wie immer gleich Hilfe von den Profis.
In meinem Fall soll per Batch geprüft werden ob eine Xml-Datei in einem ganz bestimmten Ordner vorhanden ist und wenn JA, sollen dann mehrere Informationen aus dieser Xml ausgelesen werden und per Email versendet werden.
Den ersten Teil (die Überprüfung ob Xml vorhanden ist bekomme ich hin.
Auch den letzten Teil (per Email versenden) bekomme ich auch hin.
Aber aus der Xml auslesen will einfach nicht funktionieren.
Die Xml sieht wie folgt aus:
<JobDetails>
<SerialNumber>1234567890</SerialNumber>
<MessageID>ef574eb2-3cc4-43c6-86ca-2abc3d5ccc94</MessageID>
<ProgressCode>1</ProgressCode>
<ProgressMsg>OK</ProgressMsg>
<Attempts>1</Attempts>
<Timestamp>20130328-0609</Timestamp>
<SwitchState>Aus</SwitchState>
<ServicePointName>DE000536247680000100027012000S036</ServicePointName>
<Source>Lichtsensor</Source>
</JobDetails>
<JobDetails>
<SerialNumber>1234567891</SerialNumber>
<MessageID>f2650a02-7f12-4e2e-89fb-88896cf2f4e7</MessageID>
<ProgressCode>1</ProgressCode>
<ProgressMsg>NOK</ProgressMsg>
<Attempts>1</Attempts>
<Timestamp>20130328-0609</Timestamp>
<SwitchState>Aus</SwitchState>
<ServicePointName>DE000536247680000100027012000S028</ServicePointName>
<Source>Lichtsensor</Source>
</JobDetails>
Das ist nur ein Ausschnitt, es sind ca. 10 solche Jobs hintereinander vorhanden.
Per Batch soll überprüft werden ob <ProgressMsg>OK ist, wenn ja GOTO Next und wenn
<TimeStamp>20130328-0609
in eine Log-Datei geschrieben werden und dann per Email versendet werden.
Es wäre super wenn mir jemand hier helfen könnte!?
Viele grüße und besten Dank im Voraus
tester23
ich bin neu hier und brauche wie immer gleich Hilfe von den Profis.
In meinem Fall soll per Batch geprüft werden ob eine Xml-Datei in einem ganz bestimmten Ordner vorhanden ist und wenn JA, sollen dann mehrere Informationen aus dieser Xml ausgelesen werden und per Email versendet werden.
Den ersten Teil (die Überprüfung ob Xml vorhanden ist bekomme ich hin.
Auch den letzten Teil (per Email versenden) bekomme ich auch hin.
Aber aus der Xml auslesen will einfach nicht funktionieren.
Die Xml sieht wie folgt aus:
<JobDetails>
<SerialNumber>1234567890</SerialNumber>
<MessageID>ef574eb2-3cc4-43c6-86ca-2abc3d5ccc94</MessageID>
<ProgressCode>1</ProgressCode>
<ProgressMsg>OK</ProgressMsg>
<Attempts>1</Attempts>
<Timestamp>20130328-0609</Timestamp>
<SwitchState>Aus</SwitchState>
<ServicePointName>DE000536247680000100027012000S036</ServicePointName>
<Source>Lichtsensor</Source>
</JobDetails>
<JobDetails>
<SerialNumber>1234567891</SerialNumber>
<MessageID>f2650a02-7f12-4e2e-89fb-88896cf2f4e7</MessageID>
<ProgressCode>1</ProgressCode>
<ProgressMsg>NOK</ProgressMsg>
<Attempts>1</Attempts>
<Timestamp>20130328-0609</Timestamp>
<SwitchState>Aus</SwitchState>
<ServicePointName>DE000536247680000100027012000S028</ServicePointName>
<Source>Lichtsensor</Source>
</JobDetails>
Das ist nur ein Ausschnitt, es sind ca. 10 solche Jobs hintereinander vorhanden.
Per Batch soll überprüft werden ob <ProgressMsg>OK ist, wenn ja GOTO Next und wenn
ProgressMsg> NOK ist, dann sollen folgende Informationen
SerialNumber>1234567891
<ProgressMsg>NOKSerialNumber>1234567891
<TimeStamp>20130328-0609
in eine Log-Datei geschrieben werden und dann per Email versendet werden.
Es wäre super wenn mir jemand hier helfen könnte!?
Viele grüße und besten Dank im Voraus
tester23
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 204256
Url: https://administrator.de/forum/batch-soll-pruefen-ob-eine-xml-datei-vorhanden-ist-und-dann-mehrere-informationen-auslesen-und-und-in-eine-204256.html
Ausgedruckt am: 23.12.2024 um 10:12 Uhr
6 Kommentare
Neuester Kommentar
Anbei ein kurzes PowershellScript welches man erweitern müsste:
$xmlort = 'C:\Temp\new 2.xml'
$da = Test-Path $xmlort
if ($da -eq $true){
[xml]$xml = Get-Content $xmlort
if ($xml.JobDetails.ProgressMsg -ne "OK"){
"Serialnumber: " + $xml.JobDetails.SerialNumber >> C:\Temp\Logfehler.txt
"Status: " + $xml.JobDetails.ProgressMsg >> C:\Temp\Logfehler.txt
"Zeitstempel: " + $xml.JobDetails.Timestamp >> C:\Temp\logfehler.txt
}
}
else {
Write-Output "Datei ist nicht vorhanden"
}
$xmlort = 'C:\Temp\new 2.xml'
$da = Test-Path $xmlort
if ($da -eq $true){
[xml]$xml = Get-Content $xmlort
if ($xml.JobDetails.ProgressMsg -ne "OK"){
"Serialnumber: " + $xml.JobDetails.SerialNumber >> C:\Temp\Logfehler.txt
"Status: " + $xml.JobDetails.ProgressMsg >> C:\Temp\Logfehler.txt
"Zeitstempel: " + $xml.JobDetails.Timestamp >> C:\Temp\logfehler.txt
}
}
else {
Write-Output "Datei ist nicht vorhanden"
}
Es scheint ja wirklich ein ernstes Problem mit den tokens zu geben
bb
@echo off &setlocal enabledelayedexpansion
for /f "tokens=1,2 delims=><" %%i in (mylog.xml) do (
if "%%i"=="SerialNumber" set "SerialNumber=%%j"
if "%%i"=="ProgressMsg" set "ProgressMsg=%%j"
if "%%i"=="Timestamp" set "Timestamp=%%j"
if "%%i"=="/JobDetails" if "!ProgressMsg!"=="NOK" (
echo(!SerialNumber! !ProgressMsg! !Timestamp!
)
)
bb