Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Zwei Zeilen aus txt-Datei auslesen und als Variablen in VBS-Script verwenden

Frage Microsoft

Mitglied: templier

templier (Level 1) - Jetzt verbinden

07.12.2009, aktualisiert 08.12.2009, 7777 Aufrufe, 25 Kommentare

Hallo an alle,

ich bin im VBS-Scripting kein Profi und habe folgendes Problem: Ein VBS Script soll aus Logdateien Schlüsselwörter auslesen. Hier als test "C (CANCELED)", und beim finden der Wörter einen Fehlereintrag ins Logevent schreiben oder bei nicht finden eine Erfolgreichmeldung. Und danach die Logdateien in ein Archiv verschieben. Ich habe nun folgendes Script erstellt welches auch alle Anforderungen soweit erfüllt. Nun kommt die neue Anforderung das ich aus dem Logfile zwei Zeilen (Zeile 39 + 62) als Variablen in den Logeventeinträgen einfliechten soll. Aber hier verlässt es mich, kann mir jemand helfen? Das wäre super Hier mein bisheriges Script:

01.
 
02.
Option Explicit 
03.
 
04.
Const ForReading = 1 
05.
Dim objFSO,objFile,objTextFile,found,result,searchstring,WSHShell,directory,objShell 
06.
Dim txt(3)  
07.
txt(0) = "C (CANCELED)"  
08.
txt(1) = "C (CANCELED)"  
09.
txt(2) = "C (CANCELED)" 
10.
txt(3) = "C (CANCELED)" 
11.
 
12.
Dim dirarray(1) 
13.
dirarray(0) = "C:\Temp\Logs\" 
14.
dirarray(1) = "C:\Temp\Archiv\" 
15.
 
16.
Function unixtimestamp(oldDate) 
17.
  unixtimestamp = DateDiff("s", "01/01/1970 00:00:00", oldDate) 
18.
End Function  
19.
 
20.
For each directory in dirarray 
21.
  Set objFSO = CreateObject("Scripting.FileSystemObject")  
22.
  For Each objFile In objFSO.GetFolder(directory).Files  
23.
     If objFSO.GetExtensionName(objFile.Name) = "out" Then  
24.
       If unixtimestamp(objFile.DateCreated)>(unixtimestamp(now)-(60*60*16)) Then 
25.
          Set objTextFile = objFile.OpenAsTextStream(ForReading)  
26.
          found = false  
27.
          result=objTextFile.ReadAll 
28.
            For each searchstring in txt  
29.
              If Len(result) > 0 and not isNull(result) Then 
30.
           If InStr(result, searchstring) Then   
31.
                  found = True 
32.
           End If  
33.
              End If  
34.
            Next 
35.
           If found=true Then 
36.
           Set objShell = WScript.CreateObject("WScript.Shell") 
37.
           objShell.Run("%comspec% /C C:\Temp\Tools\logevent -m ""\\%Computername%"" -s W -r ""Filetransfer fehlgeschlagen!"" -e 4711 ""Testeintrag Ralph für das Parser-Script"""), 1, True 
38.
           objTextFile.Close                    
39.
           Else 
40.
           Set objShell = WScript.CreateObject("WScript.Shell") 
41.
           objShell.Run("%comspec% /C C:\Temp\Tools\logevent -m ""\\%Computername%"" -r ""Filetransfer erfolgreich!"" -e 4711 ""Testeintrag Ralph für das Parser-Script"""), 1, True 
42.
           objTextFile.Close  
43.
'WScript.Sleep(20000) 
44.
      End If 
45.
       End If 
46.
     End If  
47.
 Next 
48.
Next 
49.
On Error Resume Next 
50.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
51.
objFSO.MoveFile "c:\Temp\Logs\XPR*.out" , "C:\Temp\Logs2"

---
[Edit Biber] Codetags spendiert, falls es jemand bequemer lesen will. [/Edit]
Mitglied: 76109
07.12.2009 um 14:19 Uhr
Hallo templier!

In etwa so:
01.
Textzeilen = Split(Result, vbCrLf, 63) 
02.
     
03.
If UBound(Textzeilen) >= 38 Then Var1 = Textzeilen(38) Else Var1 = "" 
04.
If UBound(Textzeilen) >= 61 Then Var2 = Textzeilen(61) Else Var2 = ""
Das Textzeilen-Array beginnt ja bei 0 daher Zeile -1

Gruß Dieter
Bitte warten ..
Mitglied: templier
07.12.2009 um 14:57 Uhr
Hallo Dieter,

merci für Deine Hilfe, aber nun bekomme ich die die Meldung: "Filetransfer %Var1% erfolgreich!" im Eventlog...was mache ich nun falsch, hast Du da eine Idee?

Option Explicit

Const ForReading = 1
Dim objFSO,objFile,objTextFile,found,result,searchstring,WSHShell,directory,objShell,Textzeilen,Var1,Var2
Dim txt(3)
txt(0) = "C (CANCELED)"
txt(1) = "C (CANCELED)"
txt(2) = "C (CANCELED)"
txt(3) = "C (CANCELED)"

Dim dirarray(1)
dirarray(0) = "C:\Temp\Logs\"
dirarray(1) = "C:\Temp\Archiv\"
Textzeilen = Split(Result, vbCrLf, 63)

Function unixtimestamp(oldDate)
unixtimestamp = DateDiff("s", "01/01/1970 00:00:00", oldDate)
End Function

For each directory in dirarray
Set objFSO = CreateObject("Scripting.FileSystemObject")
For Each objFile In objFSO.GetFolder(directory).Files
If objFSO.GetExtensionName(objFile.Name) = "out" Then
If unixtimestamp(objFile.DateCreated)>(unixtimestamp(now)-(60*60*16)) Then
Set objTextFile = objFile.OpenAsTextStream(ForReading)
found = false
result=objTextFile.ReadAll
For each searchstring in txt
If Len(result) > 0 and not isNull(result) Then
If InStr(result, searchstring) Then
found = True
End If
End If
Next
If found=true Then
If UBound(Textzeilen) >= 38 Then Var1 = Textzeilen(38) Else Var1 = ""
If UBound(Textzeilen) >= 61 Then Var2 = Textzeilen(61) Else Var2 = ""
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run("%comspec% /C C:\Temp\Tools\logevent -m ""\\%Computername%"" -s W -r ""Filetransfer %Var1% fehlgeschlagen!"" -e 4711 ""Testeintrag Ralph für das Parser-Script"""), 1, True
objTextFile.Close
Else
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run("%comspec% /C C:\Temp\Tools\logevent -m ""\\%Computername%"" -r ""Filetransfer %Var1% erfolgreich!"" -e 4711 ""Testeintrag Ralph für das Parser-Script"""), 1, True
objTextFile.Close
'WScript.Sleep(20000)
End If
End If
End If
Next
Next
On Error Resume Next
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.MoveFile "c:\Temp\Logs\XPR*.out" , "C:\Temp\Logs2"
Bitte warten ..
Mitglied: 76109
07.12.2009 um 15:40 Uhr
Hallo templier!

eher so:
01.
If UBound(Textzeilen) >= 38 Then Var1 =  " " & Textzeilen(38) Else Var1 = "" 
""Filetransfer" & Var1 & " fehlgeschlagen!""

Gruß Dieter
Bitte warten ..
Mitglied: templier
07.12.2009 um 17:00 Uhr
Hallo Dieter,

merci - Ganz so hat es nicht funktioniert aber wenn ich es so ins Script schreibe, wie unten, zeigt er mir zumindest etwas an, nur noch nicht das richtige Bei beiden Zeilen zeigt er mir jetzt nur
das erste Wort an - Er sollte nun aber von beiden Zeilen die Bereiche: Textzeichen 36 bis 42 anzeigen...könntest Du hier vielleicht nochmal helfen? Das wäre Klasse von DIr..

Grüsse
Ralph


Option Explicit

Const ForReading = 1
Dim objFSO,objFile,objTextFile,found,result,searchstring,WSHShell,directory,objShell,Textzeilen,Var1,Var2
Dim txt(3)
txt(0) = "C (CANCELED)"
txt(1) = "C (CANCELED)"
txt(2) = "C (CANCELED)"
txt(3) = "C (CANCELED)"

Dim dirarray(1)
dirarray(0) = "C:\Temp\Logs\"
dirarray(1) = "C:\Temp\Archiv\"

Function unixtimestamp(oldDate)
unixtimestamp = DateDiff("s", "01/01/1970 00:00:00", oldDate)
End Function

For each directory in dirarray
Set objFSO = CreateObject("Scripting.FileSystemObject")
For Each objFile In objFSO.GetFolder(directory).Files
If objFSO.GetExtensionName(objFile.Name) = "out" Then
If unixtimestamp(objFile.DateCreated)>(unixtimestamp(now)-(60*60*16)) Then
Set objTextFile = objFile.OpenAsTextStream(ForReading)
found = false
result=objTextFile.ReadAll
For each searchstring in txt
If Len(result) > 0 and not isNull(result) Then
If InStr(result, searchstring) Then
found = True
End If
End If
Next
If found=true Then
Textzeilen = Split(Result, vbCrLf, 63)
If UBound(Textzeilen) >= 38 Then Var1 = Textzeilen(38) Else Var1 = ""
If UBound(Textzeilen) >= 61 Then Var2 = Textzeilen(61) Else Var2 = ""
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run("%comspec% /C C:\Temp\Tools\logevent -m ""\\%Computername%"" -s W -r ""Filetransfer " & Var1 & " fehlgeschlagen!"" -e 4711 ""Testeintrag Ralph für das Parser-Script"""), 1, True
objTextFile.Close
Else
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run("%comspec% /C C:\Temp\Tools\logevent -m ""\\%Computername%"" -r ""Filetransfer " & Var2 & " erfolgreich!"" -e 4711 ""Testeintrag Ralph für das Parser-Script"""), 1, True
objTextFile.Close
'WScript.Sleep(5000)
End If
End If
End If
Next
Next
On Error Resume Next
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.MoveFile "c:\Temp\Logs\XPR*.out" , "C:\Temp\Logs2"
Bitte warten ..
Mitglied: 76109
07.12.2009 um 17:20 Uhr
Hallo templier!

In etwa so:
01.
Var1 = "" 
02.
If UBound(Textzeilen) >= 38 Then 
03.
    If Len(Textzeilen(38)) >= 42 Then Var1 = " " & Mid(Textzeilen(38), 36, 6) 'Ab Position 36 Anzahl 6 Zeichen  
04.
End If
Gruß Dieter

PS. Und setze Deinen Code in Code-Tags z.B.
<$code>
Dein Code
<$/code>
ohne Dollarzeichen
Bitte warten ..
Mitglied: templier
07.12.2009 um 17:49 Uhr
Hi Dieter,

scheint jetzt grundsätzlich zu funktionieren..nur schreibt er mir die Variable nicht für jeden Eventlogeintrag...von 10 Logevents hat er gerade mal drei die Variable korrekt genommen. Kann es sein das ich die Dateien zu schnell verschiebe und kann man es so machen das er eine nach der anderen abarbeitet?

Irgendwo ist noch ein Würmchen drinne

01.
Option Explicit 
02.
 
03.
Const ForReading = 1 
04.
Dim objFSO,objFile,objTextFile,found,result,searchstring,WSHShell,directory,objShell,Textzeilen,Var1,Var2 
05.
Dim txt(3)  
06.
txt(0) = "C (CANCELED)"  
07.
txt(1) = "C (CANCELED)"  
08.
txt(2) = "C (CANCELED)" 
09.
txt(3) = "C (CANCELED)" 
10.
 
11.
Dim dirarray(1) 
12.
dirarray(0) = "C:\Temp\Logs\" 
13.
dirarray(1) = "C:\Temp\Archiv\" 
14.
 
15.
Function unixtimestamp(oldDate) 
16.
  unixtimestamp = DateDiff("s", "01/01/1970 00:00:00", oldDate) 
17.
End Function  
18.
 
19.
For each directory in dirarray 
20.
  Set objFSO = CreateObject("Scripting.FileSystemObject")  
21.
  For Each objFile In objFSO.GetFolder(directory).Files  
22.
     If objFSO.GetExtensionName(objFile.Name) = "out" Then  
23.
       If unixtimestamp(objFile.DateCreated)>(unixtimestamp(now)-(60*60*16)) Then 
24.
          Set objTextFile = objFile.OpenAsTextStream(ForReading)  
25.
          found = false  
26.
          result=objTextFile.ReadAll 
27.
            For each searchstring in txt  
28.
              If Len(result) > 0 and not isNull(result) Then 
29.
           If InStr(result, searchstring) Then   
30.
                  found = True 
31.
           End If  
32.
              End If  
33.
            Next 
34.
           If found=true Then 
35.
Textzeilen = Split(Result, vbCrLf, 63) 
36.
Var1 = ""  
37.
If UBound(Textzeilen) >= 38 Then  
38.
If Len(Textzeilen(38)) >= 42 Then Var1 = " " & Mid(Textzeilen(38), 36, 6) 'Ab Position 36 Anzahl 6 Zeichen   
39.
End If 
40.
           Set objShell = WScript.CreateObject("WScript.Shell") 
41.
           objShell.Run("%comspec% /C C:\Temp\Tools\logevent -m ""\\%Computername%"" -s W -r """Filetransfer " & Var1 & " fehlgeschlagen!""" -e 4711 ""Testeintrag Ralph für das Parser-Script"""), 1, True 
42.
           objTextFile.Close                    
43.
           Else 
44.
           Set objShell = WScript.CreateObject("WScript.Shell") 
45.
           objShell.Run("%comspec% /C C:\Temp\Tools\logevent -m ""\\%Computername%"" -r """Filetransfer " & Var1 & " erfolgreich!""" -e 4711 ""Testeintrag Ralph für das Parser-Script"""), 1, True 
46.
           objTextFile.Close  
47.
'WScript.Sleep(5000) 
48.
      End If 
49.
       End If 
50.
     End If  
51.
 Next 
52.
Next 
53.
On Error Resume Next 
54.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
55.
objFSO.MoveFile "c:\Temp\Logs\XPR*.out" , "C:\Temp\Logs2"
Bitte warten ..
Mitglied: 76109
07.12.2009 um 18:05 Uhr
Hallo templier!

Definier doch mal testweise nicht Var1 = "" sondern Var1 = " nicht gefunden"

Dann müsste Deine Ausgabe eigentlich vollständig sein.

Gruß Dieter

PS. Boaaah, Sorry heute ist Montag die String-Quoten waren ursprünglich doch richtig, weils ja innherhalb eines anderen Strings ist.

Also, komplett doch so (ohne Klammer):
01.
objShell.Run "%comspec% /C C:\Temp\Tools\logevent -m ""\\%Computername%"" -s W -r ""Filetransfer" & Var1 & " fehlgeschlagen!"" -e 4711 ""Testeintrag Ralph für das Parser-Script""", 1, True
Bitte warten ..
Mitglied: 76109
07.12.2009 um 22:51 Uhr
Zitat von templier:
merci - Ganz so hat es nicht funktioniert aber wenn ich es so ins Script schreibe, wie unten, zeigt er mir zumindest etwas an,
nur noch nicht das richtige Bei beiden Zeilen zeigt er mir jetzt nur das erste Wort an - Er sollte nun aber von beiden Zeilen die Bereiche:
Textzeichen 36 bis 42 anzeigen...könntest Du hier vielleicht nochmal helfen? Das wäre Klasse von DIr..
Also, bei der Codezeile
01.
If UBound(Textzeilen) >= 38 Then Var1 =  " " & Textzeilen(38) Else Var1 = "" 
dann ist Var1 = ganzer Zeileninhalt, wenn aber nur ein Wort in der Zeile drinnen steht, dann ist Var1 auch nur ein Wort.

Und wenn bei der Codezeile:
01.
If Len(Textzeilen(38)) >= 42 Then Var1 = " " & Mid(Textzeilen(38), 36, 6)
auch nur ein Wort drinnen steht das weniger als 42 Zeichen lang ist, dann ist Var1 = ""

Wenn die Codezeile 35:
01.
Textzeile = Textzeilen = Split(result, vbCrLf, 63)
nur im Found = True-Teil steht, dann mach Var1 im Else objShell.Run-Teil auch keinen Sinn. Ob die Variablen auch zur Verfügung stehen, wenn found = False ist, entzieht sich meiner Kenntnis.

Ausserdem kannst Du die Codezeile 20 und Codezeile 40 vor die Codezeile 19 platzieren und die Codezeile 44 ganz entfernen. Diese Objecte müssen nur einmal am Codeanfang erstellt werden.

Gruß Dieter
Bitte warten ..
Mitglied: templier
08.12.2009 um 10:40 Uhr
Hallo Dieter,

hier mal ein Beispiel-logfile und die Variablen Werte welche ich davon ausgelesen bräuchte: Zeile 9 (202868) und Zeile 39 (NCAEMES) - Die Länge der Werte sind immer gleich also 6, respektive 7 Zeichen...Wenn ich das wie oben beschrieben mache geht es einfach nicht Any ideas?

Grüsse
Ralph

01.
 "COMMAND LINE" 
02.
 "------------" 
03.
 c:\xfb.monitor\run_time\etc\xpr.bat 202868      
04.
 " " 
05.
 "-----------------------------" 
06.
 "TRANSFER REQUEST INFORMATIONS" 
07.
 "-----------------------------" 
08.
 "// Transfer Identification " 
09.
 "Transfer identification       :" 202868 
10.
 "Direction                     :" I 
11.
 "Connection mode               :" R 
12.
 "// Transfer state " 
13.
 "State of transfer             :" E (ENDED) 
14.
 "Last end reason               :" 0 
15.
 "Last end protocol diagnostic  :" 0 
16.
 "Last end local error          :" 0 
17.
 "transfer routed state         :"  
18.
 "transfer user state           :" 0 
19.
 "// File Identification " 
20.
 "Local file name               :" \\storage2\interpel\data_exchange_NCA\NCAEMES\download\F0202868 
21.
 "Local file Path               :" \\storage2\interpel\data_exchange_NCA\NCAEMES\download 
22.
 "File originator               :" NCAPROD 
23.
 "File destination              :" VISPROD 
24.
 "// File Attributs " 
25.
 "File organisation             :" S 
26.
 "File size                     :" 1250 
27.
 "File record count             :" 2 
28.
 "File allocation unit          :" R 
29.
 "File allocation size          :" 2 
30.
 "File creation date            :" 091208 094502 
31.
 "File extraction date          :" 091208 094502 
32.
 "File Character set            :" B 
33.
 "Record format                 :" S 
34.
 "Record length                 :" 1024 
35.
 "text file ?                   :" N 
36.
 "// Protocol  Parameters" 
37.
 "Protocol used                 :" PEL 
38.
 "Protocol file type            :"  
39.
 "Protocol file name            :" NCAEMES 
40.
 "Protocol transfer id          :" 342000045NCAPROD 
41.
 "// Transfer Statistic " 
42.
 "Date of creation              :" 091208 094502 
43.
 "Date to begin                 :"  
44.
 "Date to end                   :"  
45.
 "Transfer started on           :" 091208 094502 
46.
 "Transfer ended on             :" 091208 094502 
47.
 "Number of retries             :" 0 
48.
 "Number of bytes transfered    :" 1258 
49.
 "Number of file bytes transfer :" 1250 
50.
 "Priority                      :" 0 
51.
 "Julien day                    :" 342 
52.
 "Sequence number               :" 45 
53.
 "Compression                   :" U 
54.
 "Remote agent                  :" NCAPROD 
55.
 "Local agent                   :" VISPROD 
56.
 "select_req                    :" 0 
57.
 "maxi_requests                 :"  
58.
 "maxi_files                    :"  
59.
 "total_requests                :" 0 
60.
 "total_files                   :" 0 
61.
 "// User Parameters " 
62.
 "User message 1                :" 000001NCA.3.eMES.20091208186005 
63.
 "User message 2                :"  
64.
 "User parameter 1              :"  
65.
 "User parameter 2              :"  
66.
 "User name                     :"  
67.
 "PeSIT sender user name        :"  
68.
 "PeSIT sender user appli       :"  
69.
 "PeSIT sender user text        :"  
70.
 "PeSIT receiver user name      :"  
71.
 "PeSIT receiver user appli     :"  
72.
 "PeSIT receiver user text      :"  
73.
 " " 
74.
 "x_master_ident                :"  
75.
 "x_nb_ended                    :" 0 
76.
 "x_nb_to_begin                 :" 0 
77.
 "x_nb_canceled                 :" 0 
78.
 "x_nb_suspended                :" 0 
79.
 "x_nb_frozen                   :" 0 
80.
 "x_nb_progressing              :"  
81.
 "x_nb_total                    :" 0 
82.
 "x_next_xfer                   :" 0 
83.
 "x_end_xfer_script             :"  
84.
 "x_scratch_file                :"  
85.
 "x_user_processed              :" 0 
86.
 "// ETEBAC5 Parameters " 
87.
 "x_id_client_sign1             :"  
88.
 "x_id_client_sign2             :"  
89.
 "x_id_bank                     :"  
90.
 "x_id_client_sec               :"  
91.
 "x_id_bank_sec                 :"  
92.
 "x_auth_type                   :"  
93.
 "x_seal_type                   :"  
94.
 "x_ciph_type                   :"  
95.
 "x_sign_type                   :"  
96.
 "x_paraf_used                  :"  
97.
 "x_rsign1_used                 :"  
98.
 "x_rsign2_used                 :"  
99.
 "x_memo_type                   :"  
100.
 "x_userarea                    :"  
101.
 "File Label                    :"  
102.
        1 file(s) copied. 
103.
        1 file(s) copied. 
104.
        1 file(s) copied.
Bitte warten ..
Mitglied: 76109
08.12.2009 um 11:58 Uhr
Hallo templier!

Oben hast Du aber geschrieben Zeile 39 und Zeile 62 und jetzt ist es Zeile 9 und Zeile 39. Was denn jetzt?

Aber anhand des Aufbaus der Logfile kann man das auslesen der Variablen dann so machen:
01.
textlines = Split(text, vbCrLf, 40) 
02.
Var1 = "":  Var2 = "" 
03.
If UBound(textlines) >= 8 Then Var1 = Mid(textlines(8), 35) 'Ab Pos 35 mit Leerzeichen den Rest der Zeile einlesen 
04.
If UBound(textlines) >= 38 Then Var2 = Mid(textlines(38), 35) 'Ab Pos 35 mit Leerzeichen den Rest der Zeile einlesen
Der Code ist etwas chaotisch, daher hab ich noch ein paar Fragen:
1. Ist der Aufbau der Logfile immer der gleiche?
2. Sollen die Variablen unabhängig davon, ob das Such-Array gefunden wird oder nicht, ausgelesen werden?
3. Wenn die Suche im Such-Array zutrifft, wird dann die Meldung "File-Transfer fehlgeschlagen" ausgegeben?
4. Wenn die Logfile die Größe 0 hat bzw. die Variablen den Wert "" haben, was soll dann passieren?
5. Und die Zeitdifferenz soll 16 Stunden betragen?

Gruß Dieter
Bitte warten ..
Mitglied: templier
08.12.2009 um 12:34 Uhr
Hallo Dieter,

ich glaube ich habe Dich jetzt verwirrt ,wobei sich das mit der Zeile von der Anforderung der Abteilung heute geändert hat (anstatt Zeile 39 nun die Zeile 9).

Also:

Ja die Logfiles sind immer gleich aufgebaut und immer grösser 0 Byte. Es soll folgendes erreicht werden:

Wenn in dem Logfile in Zeile 13 das steht zum Beispiel: C (CANCELED) dann soll durch die logevent.exe aus dem Resourcekit im Eventlog als Source die Variable (Var1) aus Zeile 39 (hier Bsp: NCAEMES) erscheinen...also alles was quasi ab dem ersten Buchstaben da steht.

Als Description im Eventlog soll die logevent.exe dann die Variable (Var2) Zeile 9 (hier Bsp: 202868) reinschreiben auch alles was ab der ersten Zahl steht.

Wird der String C (CANCELED) nicht gefunden, dann soll das gleiche wie oben ins Eventlog geschrieben werden nur mit dem Unterschied das die Meldung dann eine erfolgreiche ist. Sobald dann das LogFile geparst wurde soll es direkt in ein Archiv verschoben werden, so das man die Meldungen nicht doppelt bekommt. Dann soll das nächste LogFile die gleiche "Behandlung" bekommen und so weiter und so fort...es sollen auch keine Logfiles angefasst werden die älter als 16 Stunden sind

Ich weiss - Ist nicht so ganz einfach zumal dieses doofe logevent.exe soviele Hochkommas in den zu schreibenden Texten hat

Grüsse
Ralph

Dein letzter Ansatz hat übrigens nicht funktioniert Du kannst mir auch eine Mail senden, dann könnte ich Dir mal Screenshots zusenden..ist vielleicht einfacher für das Verständnis?
Bitte warten ..
Mitglied: 76109
08.12.2009 um 13:20 Uhr
Hallo Ralph!

Mein zuletzt peposteter Code funktioniert schon. Nur auf den ersten Blick, steht der Code in Deinem Code an der falschen Stelle.

Setze den Code mal vor die Codezeile 27 bzw. gleich nach Codezeile 26.

Ich muss jetzt leider weg und schau mir das Ganze später genauer an

Gruß Dieter
Bitte warten ..
Mitglied: templier
08.12.2009 um 13:35 Uhr
Hi Dieter

geht leider auch nicht Ich bekomme im Eventlog zwar die korrekten Meldungen (erfolgreich oder nicht) nur die Variablen setzt er mir einfach nicht in die Description und die Source im Eventlog ein

Hier nochmal der aktuelle Code, da siehst Du auch wo der jeweilige Text der Variablen stehen sollte....

Grüsse
Ralph

01.
Option Explicit 
02.
 
03.
Const ForReading = 1 
04.
Dim objFSO,objFile,objTextFile,found,result,searchstring,WSHShell,directory,objShell,textlines,text,Var1,Var2 
05.
Dim txt(3)  
06.
txt(0) = "C (CANCELED)"  
07.
txt(1) = "C (CANCELED)"  
08.
txt(2) = "C (CANCELED)" 
09.
txt(3) = "C (CANCELED)" 
10.
 
11.
Dim dirarray(1) 
12.
dirarray(0) = "C:\Temp\Logs\" 
13.
dirarray(1) = "C:\Temp\Archiv\" 
14.
 
15.
Function unixtimestamp(oldDate) 
16.
  unixtimestamp = DateDiff("s", "01/01/1970 00:00:00", oldDate) 
17.
End Function  
18.
 
19.
For each directory in dirarray 
20.
  Set objFSO = CreateObject("Scripting.FileSystemObject")  
21.
  For Each objFile In objFSO.GetFolder(directory).Files  
22.
     If objFSO.GetExtensionName(objFile.Name) = "out" Then  
23.
       If unixtimestamp(objFile.DateCreated)>(unixtimestamp(now)-(60*60*16)) Then 
24.
          Set objTextFile = objFile.OpenAsTextStream(ForReading)  
25.
          found = false  
26.
          result=objTextFile.ReadAll 
27.
textlines = Split(text, vbCrLf, 40)  
28.
Var1 = "":  Var2 = ""  
29.
If UBound(textlines) >= 8 Then Var1 = Mid(textlines(8), 35) 'Ab Pos 35 mit Leerzeichen den Rest der Zeile einlesen  
30.
If UBound(textlines) >= 38 Then Var2 = Mid(textlines(38), 35) 'Ab Pos 35 mit Leerzeichen den Rest der Zeile einlesen 
31.
            For each searchstring in txt  
32.
              If Len(result) > 0 and not isNull(result) Then 
33.
           If InStr(result, searchstring) Then   
34.
                  found = True 
35.
           End If  
36.
              End If  
37.
            Next 
38.
           If found=true Then 
39.
           Set objShell = WScript.CreateObject("WScript.Shell") 
40.
           objShell.Run "%comspec% /C C:\Temp\Tools\logevent -m ""\\%Computername%"" -s W -r ""Filetransfer" & Var1 & " fehlgeschlagen!"" -e 4711 ""Filetransfer für das File " & Var2 & " ist fehlgeschlagen""", 0, True 
41.
           objTextFile.Close                    
42.
           Else 
43.
           Set objShell = WScript.CreateObject("WScript.Shell") 
44.
           objShell.Run "%comspec% /C C:\Temp\Tools\logevent -m ""\\%Computername%"" -r ""Filetransfer" & Var1 & " erfolgreich!"" -e 4711 ""Filetransfer für das File " & Var2 & " wurde erfolgreich abgeschlossen""", 0, True 
45.
           objTextFile.Close  
46.
'WScript.Sleep(5000) 
47.
      End If 
48.
       End If 
49.
     End If  
50.
Next 
51.
Next 
52.
On Error Resume Next 
53.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
54.
objFSO.MoveFile "c:\Temp\Logs\XPR*.out" , "C:\Temp\Logs2"
Bitte warten ..
Mitglied: 76109
08.12.2009 um 13:57 Uhr
Hallo Ralph!

Da haben wir jetzt aber beide geschlafen

ändere die Codezeile 27 in:
01.
textlines = Split(result, vbCrLf, 40)  
Aber jetzt muss ich endgültig weg

Gruß Dieter
Bitte warten ..
Mitglied: TsukiSan
08.12.2009 um 14:50 Uhr
Hallo ihr lieben,

nur kurzer Hinweis:
templier möchte Var2 aus Zeile 9 und Var1 aus Zeile 39 zugewiesen haben.
Im Moment habt ihr das umgekehrt.

Gruss
Tsuki
Bitte warten ..
Mitglied: templier
08.12.2009 um 14:51 Uhr
Hallo Dieter,

ich habe es endlich hinbekommen durch "herumprobieren" - OK, ist wohl nicht die beste Art aber das Script erfüllt jetzt seinen Zweck und ich bekomme die
ganzen Informationen, welche ich brauche, aus den Logfiles

Ich danke Dir für Deine Hilfe und ich hoffe ich kann das mal wieder gutmachen Hier noch das funktionierende Script:

Grüsse und nochmal Danke
Ralph

01.
Option Explicit 
02.
 
03.
Const ForReading = 1 
04.
Dim objFSO,objFile,objTextFile,found,result,searchstring,WSHShell,directory,objShell,textzeilen,text,Var1,Var2 
05.
Dim txt(0)  
06.
txt(0) = "C (CANCELED)"  
07.
'txt(1) = "E (ENDED)"  
08.
'txt(2) = "C (CANCELED)" 
09.
'txt(3) = "C (CANCELED)" 
10.
 
11.
Dim dirarray(1) 
12.
dirarray(0) = "C:\Temp\Logs\" 
13.
dirarray(1) = "C:\Temp\Archiv\" 
14.
 
15.
Function unixtimestamp(oldDate) 
16.
Unixtimestamp = DateDiff("s", "01/01/1970 00:00:00", oldDate) 
17.
End Function  
18.
 
19.
For each directory in dirarray 
20.
  Set objFSO = CreateObject("Scripting.FileSystemObject")  
21.
    For Each objFile In objFSO.GetFolder(directory).Files  
22.
     If objFSO.GetExtensionName(objFile.Name) = "out" Then  
23.
        If  unixtimestamp(objFile.DateCreated)>(unixtimestamp(now)-(60*60*24)) Then 
24.
          Set objTextFile = objFile.OpenAsTextStream(ForReading)  
25.
           found = false  
26.
           result=objTextFile.ReadAll 
27.
           Textzeilen = Split(Result, vbCrLf, 63)  
28.
           Var1 = "": Var2 = ""   
29.
           If UBound(Textzeilen) >= 38 Then   
30.
           If Len(Textzeilen(38)) >= 8 Then Var1 = "" & Mid(Textzeilen(38), 36) 'Ab Position 36 den Rest der Zeile auslesen     
31.
           If Len(Textzeilen(8)) >= 8 Then Var2 = "" & Mid(Textzeilen(8), 36) 'Ab Position 36 den Rest der Zeile auslesen 
32.
           For each searchstring in txt  
33.
           If Len(result) > 0 and not isNull(result) Then 
34.
           If InStr(result, searchstring) Then   
35.
           found = True 
36.
           Set objShell = WScript.CreateObject("WScript.Shell") 
37.
           objShell.Run "%comspec% /C C:\Temp\Tools\logevent -m ""\\%Computername%"" -s W -r ""Filetransfer " & Var1 & " fehlgeschlagen!"" -e 4711 ""Der Filetransfer " & Var2 & " ist fehlgeschlagen - Bitte pruefen!""", 0, True 
38.
           objTextFile.Close                    
39.
           Else 
40.
           Set objShell = WScript.CreateObject("WScript.Shell") 
41.
           objShell.Run "%comspec% /C C:\Temp\Tools\logevent -m ""\\%Computername%"" -r ""Filetransfer " & Var1 & " erfolgreich!"" -e 4711 ""Der Filetransfer " & Var2 & " wurde erfolgreich abgeschlossen""", 0, True 
42.
           objTextFile.Close  
43.
           End If  
44.
           End If  
45.
           Next 
46.
           If found=true Then 
47.
           End If  
48.
         End If 
49.
       End If 
50.
   End If  
51.
Next 
52.
Next 
53.
On Error Resume Next 
54.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
55.
objFSO.MoveFile "c:\Temp\Logs\XPR*.out" , "C:\Temp\Logs2"
Bitte warten ..
Mitglied: 76109
08.12.2009 um 15:52 Uhr
Hallo Tsuki

Zitat von TsukiSan:
nur kurzer Hinweis:
templier möchte Var2 aus Zeile 9 und Var1 aus Zeile 39 zugewiesen haben.
Im Moment habt ihr das umgekehrt.
Danke für den Hinweis. Wenigstens einer, der mitdenkt

Gruß Dieter
Bitte warten ..
Mitglied: templier
08.12.2009 um 16:02 Uhr
Jupp,

merci Tsuki . Das habe aber korrigiert und mittlerweile sogar schon 5 Variablen im Einsatz *grins* - Macht ja richtig Spass wenns mal geht

Danke an alle
Ralph
Bitte warten ..
Mitglied: 76109
08.12.2009 um 16:13 Uhr
Hallo Ralph!

Oh oh, was ist das denn für ein willenloses Durcheinander. Und da soll was funktionieren????????????

Deine E-Mail-Adresse solltest Du vielleicht noch entfernen.

Gruß Dieter
Bitte warten ..
Mitglied: templier
08.12.2009 um 18:11 Uhr
Ja, Du wirst lachen es funktioniert perfekt (habe es auf über 5000 Logfiles losgelassen und Stichproben gemacht)

Ich werde es morgen noch etwas aufräumen und dann poste ich Dir das endgültige Script (sogar mit 5 Variablen) und den Output den ich nun endlich im Windows Eventlog habe Nun kann der MOM-Server hier in der Firma was vernünftiges damit anfangen

Merci für den Hinweis mit der E-Mailadresse - Ist gelöscht
Bitte warten ..
Mitglied: Biber
08.12.2009 um 19:19 Uhr
A propos "Löschen", templier,

Wenn du doch in Zeile 19 dein "For each directory in dirarray" lostrittst und in der Zeile 20 das "Set objFSO = CreateObject("Scripting.FileSystemObject") " machst und dasselbe Zeile 54 nochmal...
-> da würde ich ein wenig feintunen.
Vielleicht mal Zeile 19/20 tauschen und Zeile 54 löschen...

Ich mein ja nur.... so fett mit den Ressourcen rumaasen gilt in diesen Zeiten ja nicht mal mehr in ganz USA als so richtig hip.

Und wenn du meinst, dann würde das Skriptchen eventuell zu kurz... spendier doch ein paar Kommentarzeilen in der endgültigen Fassung.

Denn ich versprech dir - irgendwann ist der Schnipsel fertig und du musst ihn 7 Monate auch nicht ändern...
Und dann plötzlich sollst du "mal eben schnell eine Kleinigkeit anpassen".
Du wirst nicht glauben, dass du diesen Schnipsel schon mal gesehen, geschweige denn geschrieben hast.


Grüße
Biber
Bitte warten ..
Mitglied: 76109
08.12.2009 um 19:49 Uhr
Hallo Ralph, hallo Biber!

Jetzt sogar mit Foto

Wenn das Such-Array mit "C (CANCELED)" etc wieder mehr als einen String enthält, dann läufts nicht mehr so rund

@Biber
Da hab ich weiter oben auch schon drauf hingewiesen, jedoch ohne Erfolg

Hier mal nen Code, wie ich es machen würde:
01.
Option Explicit 
02.
 
03.
Dim objShell, objFso, objFile, objTextFile, objDir, Text, TextLines 
04.
Dim DirArray(1), SearchArray, SearchText, Found, Var1, Var2 
05.
 
06.
DirArray(0) = "C:\Temp\Logs" 
07.
DirArray(1) = "C:\Temp\Archiv" 
08.
 
09.
SearchArray = Array("C (CANCELED)", "E (ENDED)", ".......") 
10.
 
11.
Set objShell = CreateObject("WScript.Shell") 
12.
Set objFso = CreateObject("Scripting.FileSystemObject") 
13.
 
14.
For Each objDir In DirArray 
15.
    For Each objFile In objFso.GetFolder(objDir).Files 
16.
        If LCase(objFso.GetExtensionName(objFile.Name)) = "out" Then 
17.
            If objFile.DateCreated > DateAdd("h", -16, Now) Then 
18.
                Set objTextFile = objFso.OpenTextFile(objFile) 
19.
                Text = objTextFile.ReadAll:  objTextFile.Close 
20.
                TextLines = Split(Text, vbCrLf, 40) 
21.
                Var1 = "":  Var2 = "" 
22.
                If UBound(TextLines) >= 38 Then 
23.
                    Var1 = Mid(TextLines(38), 36):  Var2 = Mid(TextLines(8), 36) 
24.
                End If 
25.
                Found = False 
26.
                For Each SearchText In SearchArray 
27.
                    If InStr(1, Text, SearchText, vbTextCompare) > 0 Then Found = True:  Exit For 
28.
                Next 
29.
                If Found = True Then 
30.
                    objShell.Run "%comspec% /C C:\Temp\Tools\logevent -m ""\\%Computername%"" -s W -r ""Filetransfer " & Var1 &  " fehlgeschlagen!"" - 4711 ""Der Filetransfer " & Var2 & " ist fehlgeschlagen - Bitte pruefen!""", 0, True 
31.
                Else 
32.
                    objShell.Run "%comspec% /C C:\Temp\Tools\logevent -m ""\\%Computername%"" -r ""Filetransfer " & Var1 & " erfolgreich!"" -e 4711 ""Der Filetransfer " & Var2 & " wurde erfolgreich abgeschlossen""", 0, True 
33.
                End If 
34.
            End If 
35.
         End If 
36.
    Next 
37.
Next 
38.
 
39.
On Error Resume Next 
40.
objFso.MoveFile "c:\Temp\Logs\XPR*.out", "C:\Temp\Logs2"
Nur so als Anregung

Gruß Dieter
Bitte warten ..
Mitglied: templier
08.12.2009 um 20:05 Uhr
Hallo Dieter und Biber,

ich werde das morgen mal testen - Wie ich schon darauf hingewiesen habe im Eingangsthread bin ich kein Profi in der Geschichte und da bin ich natürlich sehr dankbar für jeden Tip denn: "nur was man sich erschwitzt - Das sitzt" habe ich zumindest mal so gelernt. Mein VBS-Scripting-Wissen ist nicht total überragend und die letzten "anspruchsvollen" Scripte sind auch schon ein paar Jahre her, da vergisst man viel oder sieht die 0 vor lauter 1en eben nicht gleich

Ich werde euch auf jedem Fall auf dem laufenden hier halten, denn andere sollen ja auch eventuell davon profitieren können.. Dafür ist so eine Gemeinschaft, wie dieses Forum, ja da.

Wobei, da das Script jetzt (schon) sehr gut läuft ist schon ne weitere, sagen wir mal "Anforderung" an mich gekommen (war zu erwarten, da Kunden ja immer die "Eierlegende Wollmichsau" suchen), was es denn viiiiieleicht auch gleich noch mitmachen könnte. Ok, hier habe ich schon ideen. Aber erstmal werde ich euren Ratschlägen folgen und das Script entschlacken und übersichtlicher gestalten. Mir gefällt es ja momentan genausowenig aber die Leutz wollten halt Ergebnisse sehen, wie das eben so ist - Aber das kennt ihr ja bestimmt auch

@Dieter
Ja, jetzt mit Foto - Man muss sich ja nicht verstecken, nur weil man Hilfe benötigt. Ich glaube kaum das jemand aus dem Forum nun, sollte er mich im realen Leben erkennen, mit dem Finger auf mich zeigen wird *lach*

Und das Sucharray: "C (CANCELED)"; "E (ENDED)"; etc ändert sich nie, die Anwendung schreibt das Logfile immer gleich. Gott sei Dank *lach*. Die anderen beiden Zustände habe ich auch schon hinzugefügt.

@Biber
Da haste vollkommen recht und in der "Endfassung" des Scriptes wird das auch berücksichtigt werden Wobei, ein bissel verschwenderisch dürfen wir aus der IT ja schon sein - Das merkt ggf. ja sowieso keiner der überhaupt keinen Plan von der Materie hat *lach*..oder?

@All
Sollte es hier mal ein Unterforum mit dem Thema CITRIX geben, dann kann ich euch sogar sehr gut ebenso helfen - Geben und Nehmen eben

Grüsse an alle aus (derzeit) der Schweiz
Ralph
Bitte warten ..
Mitglied: 76109
08.12.2009 um 20:37 Uhr
Hallo Ralph!

Zitat von templier:
ich werde das morgen mal testen - Wie ich schon darauf hingewiesen habe im Eingangsthread bin ich kein Profi in der Geschichte
und da bin ich natürlich sehr dankbar für jeden Tip denn: "nur was man sich erschwitzt - Das sitzt" habe ich
zumindest mal so gelernt
Da ist was Wahres dran, zumindest habe auch ich diese Erfahrung gemacht

Ich werde euch auf jedem Fall auf dem laufenden hier halten, denn andere sollen ja auch eventuell davon profitieren können..
Dafür ist so eine Gemeinschaft, wie dieses Forum, ja da.
Sehe ich auch so...
Wobei, da das Script jetzt (schon) sehr gut läuft ist schon ne weitere, sagen wir mal "Anforderung" an mich
gekommen, was es denn viiiiieleicht auch gleich noch mitmachen könnte. Ok, hier habe ich schon ideen. Aber erstmal werde ich
euren Ratschlägen folgen und das Script entschlacken und übersichtlicher gestalten. Mir gefällt es ja momentan
genausowenig aber die Leutz wollten halt Ergebnisse sehen, wie das eben so ist - Aber das kennt ihr ja bestimmt auch
Yepp, desdewegen versuchen wir ja auch so gut es geht zu helfen
@Dieter
Ja, jetzt mit Foto - Man muss sich ja nicht verstecken, nur weil man Hilfe benötigt. Ich glaube kaum das jemand aus dem
Forum nun, sollte er mich im realen Leben erkennen, mit dem Finger auf mich zeigen wird *lach*
War auch nicht ironisch gemeint, falls Du es so verstanden hast
@All
Sollte es hier mal ein Unterforum mit dem Thema CITRIX geben, dann kann ich euch sogar sehr gut helfen - Geben und Nehmen eben
Siehste, davon habe ich Null Ahnung, aber schon des öfteren Beiträge dazu gesehen

Grüße aus Mannheim

Dieter
Bitte warten ..
Mitglied: templier
10.12.2009 um 09:49 Uhr
Hallo an alle,

sodele das ist nun die endgültige Fassung welche mir die folgenden Informationen aus den Logfiles herausholt und demenstprechend
einstuft (Warnung oder Information wie oben das Beispiellogfile). Als Text schreibt er mir dann (Bsp.) folgendes ins Windowseventlog:

Als Information:
"Der Filetransfer 204065 von NCAPROD nach VISPROD mit dem File 000002NCA.3.eMES.20091210015507 wurde erfolgreich abgeschlossen." oder

als Warnung
"Der Filetransfer 204065 von NCAPROD nach VISPROD mit dem File 000002NCA.3.eMES.20091210015507 ist fehlgeschlagen - Bitte pruefen!."

Diese Daten werden hier nun mit dem MOM-Server ausgelesen und somit kann reagiert werden wenn etwas fehlschlägt. Die Informations-Meldungen sind hierfür
gedacht um Statistiken über die einzelnen Filetransfers zu erstellen (nur zur Info: Wir haben hier täglich etwa so um die 1500 Filetransfers, welcher je ein einzelnes
LogFile generiert)

Merci nochmal an alle

Und hier das Script:

01.
Option Explicit 
02.
 
03.
Const ForReading = 1 
04.
Dim objFSO,objFile,objTextFile,found,result,searchstring,WSHShell,directory,objShell,textzeilen,Var1,Var2,Var3,Var4,Var5 
05.
Dim txt(0)  
06.
txt(0) = "C (CANCELED)"  
07.
'txt(1) = "E (ENDED)"  
08.
'txt(2) = "A (ACKNOWLEDGED)" 
09.
'txt(3) = "U (UNKNOWN)" 
10.
 
11.
Dim dirarray(1) 
12.
dirarray(0) = "C:\Temp\Logs\" 
13.
dirarray(1) = "C:\Temp\Archiv\" 
14.
 
15.
Function unixtimestamp(oldDate) 
16.
Unixtimestamp = DateDiff("s", "01/01/1970 00:00:00", oldDate) 
17.
End Function  
18.
 
19.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
20.
Set objShell = WScript.CreateObject("WScript.Shell") 
21.
 
22.
For each directory in dirarray  
23.
   For Each objFile In objFSO.GetFolder(directory).Files  
24.
     If objFSO.GetExtensionName(objFile.Name) = "out" Then  
25.
        If  unixtimestamp(objFile.DateCreated)>(unixtimestamp(now)-(60*60*24)) Then 
26.
          Set objTextFile = objFile.OpenAsTextStream(ForReading)  
27.
            found = false  
28.
             result=objTextFile.ReadAll 
29.
              Textzeilen = Split(Result, vbCrLf, 63)  
30.
              If UBound(Textzeilen) >= 38 Then   
31.
              If Len(Textzeilen(8)) >= 8 Then Var2 = "" & Mid(Textzeilen(8), 36) 'Ab Position 36 Zeile auslesen 
32.
              If Len(Textzeilen(21)) >= 8 Then Var4 = "" & Mid(Textzeilen(21), 36) 'Ab Position 36 Zeile auslesen 
33.
              If Len(Textzeilen(22)) >= 8 Then Var5 = "" & Mid(Textzeilen(22), 36) 'Ab Position 36 Zeile auslesen 
34.
              If Len(Textzeilen(38)) >= 8 Then Var1 = "" & Mid(Textzeilen(38), 36) 'Ab Position 36 Zeile auslesen     
35.
              If Len(Textzeilen(61)) >= 8 Then Var3 = "" & Mid(Textzeilen(61), 36) 'Ab Position 36 Zeile auslesen 
36.
              For each searchstring in txt  
37.
              If Len(result) > 0 and not isNull(result) Then 
38.
              If InStr(result, searchstring) Then   
39.
              found = True 
40.
              objShell.Run "%comspec% /C C:\Temp\Tools\logevent -m ""\\%Computername%"" -s W -r ""Filetransfer " & Var1 & " fehlgeschlagen!"" -e 4711 ""Der Filetransfer " & Var2 & " von " & Var4 & " nach " & Var5 & " mit dem File " & Var3 & " ist fehlgeschlagen - Bitte pruefen!""", 0, True                
41.
              Else 
42.
              objShell.Run "%comspec% /C C:\Temp\Tools\logevent -m ""\\%Computername%"" -r ""Filetransfer " & Var1 & " erfolgreich!"" -e 4711 ""Der Filetransfer " & Var2 & " von " & Var4 & " nach " & Var5 & " mit dem File " & Var3 &" wurde erfolgreich abgeschlossen""", 0, True 
43.
            End If  
44.
           End If  
45.
         Next 
46.
        End If 
47.
       End If 
48.
     End If  
49.
   Next 
50.
Next 
51.
On Error Resume Next 
52.
objFSO.MoveFile "c:\Temp\Logs\XPR*.out" , "C:\Temp\Logs2"
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Batch & Shell
gelöst Einzelne Zeilen in txt Datei speichern und auslesen (7)

Frage von noah1400 zum Thema Batch & Shell ...

Batch & Shell
gelöst In Batchdatei Variablen befüllen - mit Werten aus einer TXT-Datei (6)

Frage von donnyS73lb zum Thema Batch & Shell ...

Webentwicklung
HTML Output in eine txt Datei mit VisualBasicScript (2)

Frage von coca22COCA zum Thema Webentwicklung ...

VB for Applications
VBS Script zum versenden mehrerer Verknüpfungen zu Dateien per Lotus Notes

Frage von Sentinel87 zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (13)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...