string auslesen und vergleichen

Aha die Idee jeden Prozess eine Variable zuzuweisen hatte ich auch schon, wusste dann aber nicht weiter.

Vieleicht könntest du mir deine Änderung einmal in den gesamtscript übernehmen und dann versuch ich nochmal dies nachzuvollziehen.


Mfg der dynamofan

Hier nochmal der bisherige Script:
Visual Basic:
' +++ Konstanten und Variablen deklarieren
Const fsForReading = 1
Dim strDateiname, strInhalt
Dim objFs           ' FileSystemObject Objekt
Dim objTextStream   ' Textstream Objekt

' +++ Datei, deren Inhalt gelesen wird:
strDateiname = "C:\Dokumente und Einstellungen\Janze_Alexander\Desktop\plist.txt"
' +++ FileSystemObject anlegen und in fs speichern:
Set objFs = CreateObject("Scripting.FileSystemObject")
' +++ Textstream oeffnen, erlaubt Zugriff auf den Inhalt der Datei
Set objTextStream = objFs.OpenTextFile(strDateiname, fsForReading)
' +++ Gesamten Datei-Inhalt lesen und ausgeben

abbruch = False                         ' Setzen der Abbruchbedingung
    While Not abbruch                       'Schleife Beginn
        strInhalt = objTextStream.ReadLine  ' Zeile einlesen
        If InStr(1, strInhalt, "backup4.cmd", vbTextCompare) = suche Then
            If objTextStream.atEndOfStream Then ' Falls das Ende des Files erreicht wurde
                MsgBox ("Suchtext nicht gefunden") 'Warnmeldung
            End If 'schliest das letzte If !
        Else
            ' gefunden also while Schleife verlassen und 30sec. warten
            abbruch = True ' Setzt die Abbruch bedingung
        End If
    Wend ' springt im script nach oben? zum While
    WScript.Sleep 30000 '+++warte 30 Sec
 
Hallo,
könntest du deine Änderungen vielleicht in den Script übernehmen? Ich habs auch schon probiert zu integrieren, hat aber leider nicht funktionert.

Mfg der dynamofan
 
Visual Basic:
' +++ Konstanten und Variablen deklarieren
Const fsForReading = 1
Dim strDateiname, strInhalt
Dim objFs           ' FileSystemObject Objekt
Dim objTextStream   ' Textstream Objekt

backup1.cmd = 1
backup2.cmd = 2
backup3.cmd = 3
backup4.cmd = 4

' +++ Datei, deren Inhalt gelesen wird:
strDateiname = "C:\...\plist.txt"
' +++ FileSystemObject anlegen und in fs speichern:
Set objFs = CreateObject("Scripting.FileSystemObject")
' +++ Textstream oeffnen, erlaubt Zugriff auf den Inhalt der Datei
Set objTextStream = objFs.OpenTextFile(strDateiname, fsForReading)
' +++ Gesamten Datei-Inhalt lesen und ausgeben

abbruch = False                         ' Setzen der Abbruchbedingung
    While Not abbruch                       'Schleife Beginn
        strInhalt = objTextStream.ReadLine  ' Zeile einlesen
        If InStr(1, strInhalt, "process2", vbTextCompare) <> suche then
         gefunden = gefunden  and 2
            If objTextStream.atEndOfStream Then ' Falls das Ende des Files erreicht wurde
                MsgBox ("Suchtext nicht gefunden") 'Warnmeldung
            End If 'schliest das letzte If !
        Else
            ' gefunden also while Schleife verlassen und 30sec. warten
            abbruch = (gefunden = 13) ' du willst ja nur abbrechen wenn alle 4 Prozesse da sind
			if not abbruch then
 			abbruch = objTextStream.atEndOfStream 'Textfile zu ende also auch abbruch
			end if
        End If
    Wend ' springt im script nach oben? zum While
    WScript.Sleep 30000 '+++warte 30 Sec

Hab deine Änderung so übernommen. Da bringt er mir aber einen Fehler. Ich weiß aber z.Z. noch nicht was ich ändern soll das es funktioniert. Vielleicht kannst du mir dabei behilflich sein.

Mfg der dynamofan
 
Ja jetzt verstehe ich. Du willst 4 mal nach dem gleichen Prozess suchen. Zeile 7 - 10 können weg.
in Zeile 23 kommt
Visual Basic:
If InStr(1, strInhalt, "backup1.cmd", vbTextCompare) = suche Then            
gefunden = gefunden +1
dann direkt danach
Visual Basic:
If InStr(1, strInhalt, "backup2.cmd", vbTextCompare) = suche Then            
gefunden = gefunden +1
und natürlich die anderen beiden
Visual Basic:
If InStr(1, strInhalt, "backup3.cmd", vbTextCompare) = suche Then            
gefunden = gefunden +1
If InStr(1, strInhalt, "backup4.cmd", vbTextCompare) = suche Then            
gefunden = gefunden +1

in Zeile 30 dann
Visual Basic:
abbruch = (gefunden >= 4)

Grüsse bb
 
Also wenn ich das alles richtig versatanden habe, müsstes dann so aussehen:
Visual Basic:
' +++ Konstanten und Variablen deklarieren
Const fsForReading = 1
Dim strDateiname, strInhalt
Dim objFs           ' FileSystemObject Objekt
Dim objTextStream   ' Textstream Objekt

' +++ Datei, deren Inhalt gelesen wird:
strDateiname = "C:\Dokumente und Einstellungen\Janze_Alexander\Desktop\plist.txt"
' +++ FileSystemObject anlegen und in fs speichern:
Set objFs = CreateObject("Scripting.FileSystemObject")
' +++ Textstream oeffnen, erlaubt Zugriff auf den Inhalt der Datei
Set objTextStream = objFs.OpenTextFile(strDateiname, fsForReading)
' +++ Gesamten Datei-Inhalt lesen und ausgeben

abbruch = False                         ' Setzen der Abbruchbedingung
    While Not abbruch                       'Schleife Beginn
        strInhalt = objTextStream.ReadLine  ' Zeile einlesen
			If InStr(1, strInhalt, "backup1.cmd", vbTextCompare) = suche Then            
				gefunden = gefunden +1
			If InStr(1, strInhalt, "backup2.cmd", vbTextCompare) = suche Then            
				gefunden = gefunden +1
			If InStr(1, strInhalt, "backup3.cmd", vbTextCompare) = suche Then            
				gefunden = gefunden +1
			If InStr(1, strInhalt, "backup4.cmd", vbTextCompare) = suche Then            
				gefunden = gefunden +1
			
			abbruch = (gefunden >= 4)
            If objTextStream.atEndOfStream Then ' Falls das Ende des Files erreicht wurde
                MsgBox ("Suchtext nicht gefunden") 'Warnmeldung
            End If 'schliest das letzte If !
        Else
            ' gefunden also while Schleife verlassen und 30sec. warten
            abbruch = (gefunden = 13) ' du willst ja nur abbrechen wenn alle 4 Prozesse da sind
			if not abbruch then
 			abbruch = objTextStream.atEndOfStream 'Textfile zu ende also auch abbruch
			end if
        End If
    Wend ' springt im script nach oben? zum While
    WScript.Sleep 30000 '+++warte 30 Sec

Bringt aber Fehler in Zeile 38, 5: Anweisungsende erwartet:confused:


Mfg der dynamofan
 
1. da fehlen end ifs (z.b. nach Zeile 19)
2. Zeile 33 muss auch auf >=4 testen

Grüsse bb

PS: Du bist kurz davor ;-)
 
Klar also noch zu ändern ist:
Zeile 29 da solltest du noch einfügen, das abbruch = true gesetzt wird

Zeile 31-37 kann raus! ist noch Code aus einer vorherigen Fassung wird nicht mehr benötigt.

Grüsse bb
 
Also wenn ich jetz 10 Prozessnamen in der datei stehen habe, muss ich für jeden diesen script teil einfügen.
Visual Basic:
	If InStr(1, strInhalt, "backup2.cmd", vbTextCompare) = suche Then            
				gefunden = gefunden +1
				End if
Und der Script zählt ja, wenn ich das richtige sehe, für jeden namen den er findet +1 und bricht bei 4 gefundenen übereinstimmungen die schleife ab, wartet 30sec und beginnt erneut.

Bitte korrigier mich wenn ich mich irren sollte.

Mfg der dynamofan
 

Neue Beiträge

Zurück