mycroftone
Goto Top

Möchte Script von Batch auf VBScript umsetzen. Suche Ersatz für find c und findstr

Hallo

Möchte mich mehr mit VB Script beschäftigen und versuche deshalb ein Batch Script in VB Script zu portretieren.
Habe schon Google mit ein paar tutorials und Bücher gewälzt und jede mänge Scripte versucht zu verstehen.

Bin aber grade an einen Punkt in dem ich die Anzahl Treffe in einer Logdatei herausfinden will.

In Batch einfach mit find /c "densuchwert" "diedatei".

- In VBScript bekommen ich mit instr nur den ersten treffer.
- Mit replace werde mir strings ersetzt was ich ja auch nicht will.
(Eventuell könnte ich die replacemanets zählen aber auch da schwebt mir noch keine COde vor
und würde es zu mächtig finden wenn es in batch mit einen Befehl geht.
- Mit regEx ( Regular Expression ) kan man auch nach einige suchen aber ein Count habe ich auch da noch nicht gefunden.


- Und bei findstr habe ich auch nur dir Krücke WshShell.Run "%comspec% /c findstr /L /C:""Computer"" gefunden
Also keine wirkliches Gegenstück


Kann mir da Jemand weiterhelfen.

Content-Key: 188204

Url: https://administrator.de/contentid/188204

Printed on: April 19, 2024 at 10:04 o'clock

Member: bastla
bastla Jul 17, 2012 updated at 22:36:04 (UTC)
Goto Top
Hallo mycroftone!

Etwa so:
Datei = "D:\Die Datei.txt"  
Suchwert = "derSuchwert"  

Set rE = New RegExp
With rE
    .Pattern = Suchwert
    .Global = True
End With

Set Matches = rE.Execute(CreateObject("Scripting.FileSystemObject").OpenTextFile(Datei).ReadAll)  
WScript.Echo Matches.Count
- wobei hier allerdings nicht die Anzahl von Zeilen, welche den Suchwert enthalten, zurückgegeben wird, sondern die Anzahl, wie oft der Suchwert in der Datei enthalten ist.

Falls Du das doch für Zeilen benötigst:
Datei = "D:\Die Datei.txt"  
Suchwert = "derSuchwert"  

T = Split(CreateObject("Scripting.FileSystemObject").OpenTextFile(Datei).ReadAll)  
For Each Zeile In T
    If InStr(Zeile, Suchwert) > 0 Then Anzahl = Anzahl + 1
Next
WScript.Echo Anzahl
Um den Schalter "/i" nachzubilden bei Variante 1 vor Zeile 8 einfügen
.IgnoreCase = True
bei Variante 2
If InStr(1, Zeile, Suchwert, vbTextCompare) > 0 Then Anzahl = Anzahl + 1
Grüße
bastla
Member: mycroftone
mycroftone Jul 18, 2012 at 16:00:33 (UTC)
Goto Top
Hallo Bastel


Danke für die Schnelle Hilfe. Werde es heute Abend gleich ausprobieren.

Auf die Idee Instr in einer Schleife hochzuzählen bin ich noch nicht gekommen.