Zeile aus LOG-File lesen ...

Moderator: MVogt

Antworten
Benutzeravatar
Theo_Gottwald
Beiträge: 312
Registriert: 03. Okt 2009, 08:57
Wohnort: Herrenstr.11 * 76706 Dettenheim
Kontaktdaten:

Zeile aus LOG-File lesen ...

Beitrag von Theo_Gottwald » 12. Jan 2011, 17:26

Wer keine explizite MPR-Schulung macht kann ein Super-Automatisierer sein, den kein Setup abschrecken kann.
Der aber dann strauchelt bei ganz einfachen Sachen. Wenn es dann ans Scripting geht.
Deswegen empfehlen wir auch unbedingt den Kurs I - oder in dem Fall den Kurs II.

Heute hatte ich so einen Fall. Ein Admin dem ich inzwischen jedes Setup geben würde, schreibt mir (Computername geändert):
Guten Tag Herr Gottwald,
wünsche Ihnen noch ein gutes neues Jahr. Mein Urlaub ist nun vorbei und nun muss ich mich wieder der Arbeit widmen.
Ich habe das Problem, das ich eine Zeile einer MSI Installations-Log-Datei auslesen muss:
...
Property(S): ComputerName = XYZ923
Da ist nun eine LOG-Datei und man will genau diese eine Zeile auslesen. Es ist KEINE INI-Datei, denn sonst könnte man ja einfach ein:

Code: Alles auswählen

CFI\[Dateiname]|[Sektion]|[Entry]>[Variable] machen.
Was nun?

Auch hier ist die Lösung ganz einfach - ein Dreizeiler (Die Messageboxen zum Anzeigen nicht mitgezählt)!

Code: Alles auswählen

KRM\2
' Unicode LOG-Datei ins TXT Format umwandeln
[b]EXE\?ws\cmd.exe /CTYPE C:\WINDOWS\msxml4-KB973688-enu.log >> C:\Windows\msxml4-KB973688-enu.txt[/b]
' Hier gehts los
VAR\$$FIL=?pfad\sge.log
LFF\$$FIL|ComputerName>$$LIN
MBX\$$LIN
SBD\|$$LIN|=|2
VAR\$$ERG=$v1$
MBX\$$ERG
@
Der LFF\ - Befehl (Line from File) hat nämlich die Eigenschaft dass man entweder eine Zeilennumer angeben kann. ODER eine Zeichenkette die in der gesuchten Zeile vorkommt - und das können wir hier nutzen.

Will man den Wert dann umändern gibt es das äquivalente RIF\ (Replace In File).

Hat man große Mengen Dateien (tausende!), die umfangreich analysiert werden müßen, geht das ganz genauso.

Nur verwendet man dann CFF\ um die Datei als Ganzes in eine Variable zu lesen.
Und statt LFF\ dann LFT\ (Line-from-Text) damit kann man Dateien, die in Variablen vorliegen ebenso Zeilenweise blitzschnell abbarbeiten. Da keine Plattenzugriffe nötig sind ist das nochmal um Größenordnungen schneller.
[Nachtrag: die MSI-Log-Datei ist eine UNICODE-LOG Datei. ab dem nächten MPR-Version wird man auch diese dateien direkt mit dem LFF\-Befehl auslesen können, ohne vorher der Extraschritt machen zu müssen.
Dadurch wird diese Zeile ab dem nächsen Update überflüssig:

Code: Alles auswählen

EXE\?ws\cmd.exe /CTYPE C:\WINDOWS\msxml4-KB973688-enu.log >> C:\Windows\msxml4-KB973688-enu.txt

Antworten

Zurück zu „Package Robot“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast