Textdatei leser mit Parameter übergabe
Aufruf: cscript log_reader.vbs //NOLOGO
Beispiele:
cscript log_reader.vbs "update.log" 6 //NOLOGO
cscript log_reader.vbs "update.log" "String-Start" "string-Ende" //NOLOGO
Anmerkung:
"//NOLOGO" wird nicht als Argument mitgezählt.
Die Argumente werden mit 0 beginnend übergeben an einen Array.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
Const trenn = "]-"
Const ForReading = 1 ' Für den File-Open Dialog
iArgs = wScript.Arguments.Count - 1
If iArgs<1 Then
Wscript.Echo "Syntax: Filename <start-String> [<ende-String>]"
Wscript.Echo " Filename voll-referenziert mit Pfad"
Wscript.Echo " <start-String> in Anführungszeichen ist nicht optional"
Elseif iArgs=1 Then
dateiname = wScript.Arguments(0)
strBegin = wScript.Arguments(1) 'von hier ...zeigen!
strEnde = "§_§" ' bis zum Ende
Elseif iArgs>1 Then
dateiname = wScript.Arguments(0)
strBegin = wScript.Arguments(1) 'von hier ...zeigen!
strEnde = wScript.Arguments(2) 'bis hier reicht.
End If
showlines = false
ik = 0
Dim objFSO,objFile
Set objFSO = CreateObject("Scripting.FileSystemObject")
' Wscript.Echo "ARG:" & iArgs
Do While (ik <= iArgs)
' Wscript.Echo "ARG=" & wScript.Arguments(ik)
ik = ik + 1
Loop
If not objFSO.FileExists(dateiname) Then
Wscript.Echo "Datei " & dateiname & " nicht gefunden."
Else
'------------------------------------------------------------------
Wscript.Echo "Extrahiere Teilsegment aus " & dateiname
If Not IsNumeric(strBegin) Then
Wscript.Echo " von <|" & strBegin & "|> bis <|" & strEnde & "|>"
Else
Wscript.Echo " nur die letzten " & strBegin & " Zeilen."
End If
'------------------------------------------------------------------
Set objFile = objFSO.OpenTextFile(dateiname, ForReading)
ik = 90000 ' maximal Zeilen
If IsNumeric(strBegin) Then 'ganze Datei Zeilen Zählen
ik = 0 'für den numeric Modus müssen wir doppelt lesen.
Do While objFile.AtEndOfStream = False
strLine = objFile.ReadLine 'jede Zeile Lesen
ik = ik + 1 'Zeilen Zähler.
Loop
ik = ik - strBegin 'Gesamt minus Parameter soll gezeigt werden
objFile.Close
Set objFile = objFSO.OpenTextFile(dateiname, ForReading)
End If
'------------------------------------------------------------------
Do While objFile.AtEndOfStream = False
strLine = objFile.ReadLine 'Text Zeile Lesen
ik = ik - 1 'Zeilen Zähler
If IsNumeric(strBegin) and (ik<0) Then showlines = true 'letzte x-Zeilen zeigen
If (Not IsNumeric(strBegin)) and InStr(strLine, strBegin)>0 Then showlines = true
If (showlines = true) Then Wscript.Echo strLine 'zeile Ausgeben
If InStr(strLine, strEnde)>0 Then showlines = false
Loop
objFile.Close
End If