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):
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: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
Code: Select all
CFI\[Dateiname]|[Sektion]|[Entry]>[Variable] machen.
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
@
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