borob14
Goto Top

VB + VBS um Email in Txt zu speicher, auszuwerten und Aktion auszulösen.

Hallo zusammen.

ich sitze gerade an folgendem "Problem"

Ich habe eine Standardisierte Email welche per Regel ein VBA Script auslöst, welches eine TXT erstellt und anschließende ein VBS Script startet. (das funktioniert schon mal)
Das VBS soll nun die TXT auf einen String durchsuchen und bei Erfolg nochmals nach einen weiteren String suchen. (das funktioniert ebenfalls schon) nun will ich aber, dass das Script nach dem zweiten gefundenen String bis zum nächsten Koma den Text in eine Variable speichert. (die benötige ich später um ein Event auszulösen)

Ich hoffe mal es kann mir wer helfen.

Den VBA Teil schenken wir uns mal und der derzeitige VBS Script sieht so aus:

Set fso=CreateObject("Scripting.FileSystemObject")
Set oSourcefile = fso.OpenTextFile("C:\PFAD\DATEI.txt")
while not oSourcefile.AtEndOfStream
sTemp = oSourcefile.ReadLine
If Instr(sTemp,"Kryptik")>0 then
'MsgBox "Kryptik gefunden"
Set fso=CreateObject("Scripting.FileSystemObject")
Set oSourcefile = fso.OpenTextFile("C:\PFAD\DATEI.txt")
while not oSourcefile.AtEndOfStream
sTemp = oSourcefile.ReadLine
If Instr(sTemp,"Clientlist: SERVER / ")>0 then
MsgBox "HIER SOLLTE NUN DER TEIL MIT DEM SPEICHERN DES TEXTTEILS FOLGEN"
End if
wend
End if
wend

_____________________________________________

Die Testdatei kann ich aus Sicherheitsgründen nur ungern posten. Aber wie gesagt es gibt den String: "Clientlist: SERVER / " darauf folgt dann ein Client Name welcher mit einen Komma beendet wird. Diesen brauche ich in einer Variable.

Danke schon mal für die Hilfe!

mfg Rob

Content-ID: 248907

Url: https://administrator.de/forum/vb-vbs-um-email-in-txt-zu-speicher-auszuwerten-und-aktion-auszuloesen-248907.html

Ausgedruckt am: 24.12.2024 um 03:12 Uhr

colinardo
Lösung colinardo 11.09.2014 aktualisiert um 13:12:12 Uhr
Goto Top
Hallo Rob, Willkommen auf Administrator.de!
Hab's dir etwas mit Regular Expressions optimiert (ist schneller als jedes mal Zeile für Zeile durchzugehen face-smile)
Dim strClientname, fso, regex, strContent, matches
Set fso=CreateObject("Scripting.FileSystemObject")  
Set regex = CreateObject("vbscript.regexp")   
regex.IgnoreCase = True
regex.Pattern = "Kryptik"  
strContent = fso.OpenTextFile("C:\PFAD\DATEI.txt").ReadAll()  
Set matches = regex.Execute(strContent)
If matches.Count > 0 Then
	regex.Pattern = "Clientlist: SERVER / ([^,\r\n]+)"  
	Set matches = regex.Execute(strContent)
	If matches.Count > 0 Then
		strClientname = Trim(matches(0).submatches(0))
                msgbox strClientname
	End If
End If
Grüße Uwe
Borob14
Borob14 11.09.2014 um 11:46:21 Uhr
Goto Top
Wow danke das ging schnell! Er gibt mir in der MSG Box den Client aus (so wie gewünscht) allerdings steht drunter: "Logfile: 16856" ist das mit in der Variable gespeichert? Wäre ziemlich ungünstig da ich einen CMD Befehlt mit dem Clientnamen per VBS auslösen will. Ist sicherlich ne Sinnlose Frage aber bin nicht so der Programmierer mach das nur nebenbei face-smile
colinardo
Lösung colinardo 11.09.2014 aktualisiert um 13:12:17 Uhr
Goto Top
Hab den Pattern nochmal angepasst, ist halt nicht so einfach ohne deinen RAW-Text rund um den zu extrahierenden Teil face-wink
Borob14
Borob14 11.09.2014 um 13:12:02 Uhr
Goto Top
Klappt perfekt danke! Der Client Name ist im Normalfall gleich lang, es gibt aber leider auch Ausnahmen die mit abgefangen werden müssen. Sieht aber super aus, er gibt zumindest beim Test Namen den korrekten aus (auch ein künstlich verlängerter Wert klappte!

Danke für deine schnelle und unkomplizierte Hilfe.

Eine letzte Frage hätte ich noch: Ich will ja auch dazu lernen -> ([^,\r\n]+) -> kannst du mir den Syntax erklären bzw. ne empfehlenswerte Seite nennen?
colinardo
colinardo 11.09.2014 aktualisiert um 13:15:35 Uhr
Goto Top
Zitat von @Borob14:
Eine letzte Frage hätte ich noch: Ich will ja auch dazu lernen -> ([^,\r\n]+) -> kannst du mir den Syntax erklären
bzw. ne empfehlenswerte Seite nennen?
Klar: Regular Expressions Tutorial

[^,\r\n]+

Match a single character NOT present in the list below «[^,\r\n]+»
   Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+»
   The character “,” «,»
   A carriage return character «\r»
   A line feed character «\n»
Grüße Uwe
Borob14
Borob14 11.09.2014 um 13:31:59 Uhr
Goto Top
Danke! Mal sehen wie weit ich Heute noch komme mit dem Script, geht dank dir gut voran face-smile


Schönen Tag noch