Zeile aus LOG-File lesen ...

Moderator: MVogt

Post Reply
User avatar
Theo_Gottwald
Posts: 367
Joined: 03. Oct 2009, 08:57
Location: Herrenstr.11 * 76706 Dettenheim
Contact:

Zeile aus LOG-File lesen ...

Post by 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: Select all

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: Select all

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: Select all

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

Post Reply

Return to “Package Robot”

Who is online

Users browsing this forum: Google [Bot] and 3 guests