Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Batch soll prüfen ob eine XML-Datei vorhanden ist und dann mehrere Informationen auslesen und und in eine LOG-Datei schreiben

Frage Entwicklung Batch & Shell

Mitglied: tester23

tester23 (Level 1) - Jetzt verbinden

02.04.2013 um 10:16 Uhr, 2400 Aufrufe, 6 Kommentare

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
>ProgressMsg> NOK ist, dann sollen folgende Informationen
>SerialNumber>1234567891
<ProgressMsg>NOK
<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
Mitglied: Endoro
02.04.2013 um 12:06 Uhr
Hi tester23,

leider habe ich keine Idee von deinen Vorkenntnissen, du hast keinen Code aufgeschrieben. Ich würde zB mal so anfangen:

01.
for /f "tokens=1,2 delims=><" %%i in (mylog.xml) do echo %%i %%j

bb
Bitte warten ..
Mitglied: tester23
02.04.2013 um 14:22 Uhr
Vielen Dank für die schnelle Antwort,

mein Code ist noch nicht volständig, und funktioniert nut in Teilen, deswegen habe ich Ihn hier nicht reingestellt.
Mein Problem ist die Suche nach dem möglichen Wert NOK in

<ProgressMsg>NOK</ProgressMsg>

und wenn ich ein NOK finde (die meisten sind ja sowieso OK), dann sollen die Werte

>SerialNumber>1234567891
<ProgressMsg>NOK
<TimeStamp>20130328-0609

die zu diesem NOK-Wert gehören in eine LOG-Datei geschreiben werden.

Ich komme einfach nicht mit diesen "tokens" Befehl nicht klar.

Wenn mit Jemand eine dabei helfen könnte, wäre das echt super!

viele Grüße
tester23
Bitte warten ..
Mitglied: ramses345
02.04.2013 um 18:30 Uhr
Hi,

Um welches Betriebssystem handelt es sich?
Ist die powershell drauf?

Lg
Bitte warten ..
Mitglied: ramses345
02.04.2013 um 19:20 Uhr
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"
}
Bitte warten ..
Mitglied: Endoro
02.04.2013 um 22:33 Uhr
Es scheint ja wirklich ein ernstes Problem mit den tokens zu geben

01.
@echo off &setlocal enabledelayedexpansion 
02.
for /f "tokens=1,2 delims=><" %%i in (mylog.xml) do ( 
03.
	if "%%i"=="SerialNumber" set "SerialNumber=%%j" 
04.
	if "%%i"=="ProgressMsg" set "ProgressMsg=%%j" 
05.
	if "%%i"=="Timestamp" set "Timestamp=%%j" 
06.
	if "%%i"=="/JobDetails" if "!ProgressMsg!"=="NOK" ( 
07.
		echo(!SerialNumber! !ProgressMsg! !Timestamp! 
08.
09.
)

bb
Bitte warten ..
Mitglied: tester23
03.04.2013 um 14:05 Uhr
Hallo mfm4aa,

vielen Dank, das hat mir schon sehr geholfen!
Ich habe nur noch ein kleines Problemchen:
Evtl. ist es eine Kleinigkeit, aber ich bekomme es nicht hin.

Angenommen, ich habe 4 Jobs (d.h. 4 "ProgressMsg" in der XML-Datei).
Drei davon sind OK und eine ist NOK.
Der obige Code gibt mit ja nur etwas aus wenn er einen NOK findet und für den gibt er ja etwas aus was ich weiterverarbeiten kann.
Ich brauche also eine "else" Verkünpfung irgendwo im Code mit der ich dann auch für "ProgressMsg" OK auch etwas ausgeben kann.
Das war mit gestern bei der Aufgabenstellung noch nicht bewusst.
Alle meine versuche mit "else" zu arbeiten haben heute keinen Erfolg gebracht!

Viele grüße
tester23
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
PHP
gelöst Externe XML-Datei in PHP auslesen (18)

Frage von Akrosh zum Thema PHP ...

Windows Systemdateien
gelöst Registry-Schlüssel per Batch auslesen und in Datei schreiben (9)

Frage von Philzip zum Thema Windows Systemdateien ...

XML
XML Datei Fehler? (1)

Frage von Patrick-IT zum Thema XML ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...