Per Script Ordner überwachen und Prog. ausfühern
Hallo und einen schönen Sonntag zusammen,
ich würde gerne einen oder- besser noch drei Ordner überwachen lassen und bei auftauchen einer Datei sollen zwei Programme starten. Zudem soll, nachdem die Programme gestartet sind, ein weitere andere Ordner überwacht werden und bei auftauchen einer Datei ein Script gestartet werden. Nachdem das letzte Script beendet ist sollen die Programme und die Scripts zur Überwachungen beendet werden.
Beispiel:
Ich habe diese Ordner:
A, B, C und D.
Zudem Programme
XL und XXL
und ein Script:
Test
Ordner A, B und C werden per Script überwacht (alle 5 - 15 Sek. ) und bei auftauchen einer Datei wird Programm XL, XXL und das Script zur Überwachung des Ordner D gestartet. Das Programm XXL erzeugt eine neu Datei und legt diese in Ordner D ab. Jetzt wird vom Script, das Ordner D überwacht, ein weiteres Script (Test) gestartet. Ist Script Test beendet sollen alle Programme und Überwachung Script beendet werden.
Ist das Möglich?, ich hoffe ihr könnt mir helfen.
Gruß
ich würde gerne einen oder- besser noch drei Ordner überwachen lassen und bei auftauchen einer Datei sollen zwei Programme starten. Zudem soll, nachdem die Programme gestartet sind, ein weitere andere Ordner überwacht werden und bei auftauchen einer Datei ein Script gestartet werden. Nachdem das letzte Script beendet ist sollen die Programme und die Scripts zur Überwachungen beendet werden.
Beispiel:
Ich habe diese Ordner:
A, B, C und D.
Zudem Programme
XL und XXL
und ein Script:
Test
Ordner A, B und C werden per Script überwacht (alle 5 - 15 Sek. ) und bei auftauchen einer Datei wird Programm XL, XXL und das Script zur Überwachung des Ordner D gestartet. Das Programm XXL erzeugt eine neu Datei und legt diese in Ordner D ab. Jetzt wird vom Script, das Ordner D überwacht, ein weiteres Script (Test) gestartet. Ist Script Test beendet sollen alle Programme und Überwachung Script beendet werden.
Ist das Möglich?, ich hoffe ihr könnt mir helfen.
Gruß
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 302123
Url: https://administrator.de/contentid/302123
Ausgedruckt am: 22.11.2024 um 05:11 Uhr
9 Kommentare
Neuester Kommentar
Täglich grüßt das Murmeltier:
Zum Thema "Ordner überwachen" bringt dir unsere Suche ...
Gruß jodel32
Zum Thema "Ordner überwachen" bringt dir unsere Suche ...
- Suche eine Batch,Tool oder Programm zum umbenennen von Dateien
- VBA - VBS : Umbennen und Verschieben von Dateien in Loop
- Script, dass konstant läuft einen Ordner scannt und Dateien automatisch verschiebt
Gruß jodel32
Fehlt ja die Hälfte und das ist kein Batch sondern VBS :-P
'Pfad der zu überwachen ist
Const strPath = "C:\Users\Mustermann\Desktop\Test\LK\frage"
'Überwachungs-Interval in Sekunden
Const intInterval = "2"
'------------------------------
strDrive = Split(strPath,"\")(0)
strFolder = Replace(Split(strPath,":")(1),"\","\\") & "\\"
Set fso = WScript.CreateObject("Scripting.Filesystemobject")
Set objShell = CreateObject("Wscript.Shell")
Set objWMIService = GetObject( "winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2" )
strQuery = "Select * From __InstanceOperationEvent" _
& " Within " & intInterval _
& " Where Targetinstance Isa 'CIM_DataFile'" _
& " And TargetInstance.Drive='" & strDrive & "'"_
& " And TargetInstance.Path='" & strFolder & "'"
Set colEvents = objWMIService.ExecNotificationQuery (strQuery)
Do
Set objEvent = colEvents.NextEvent()
Set objTargetInst = objEvent.TargetInstance
Select Case objEvent.Path_.Class
Case "__InstanceCreationEvent"
objShell.Run """C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe"""
End Select
Loop
Weil Leerzeichen im Pfad sind muss der Pfad zur EXE in zusätzliche Anführungszeichen eingeschlossen werden... und da die Zeichenfolge schon selbst mit einem " Eingeschlossen ist muss man um ein einzelnes " im String selbst zu erhalten, es verdoppeln (escapen), so einfach ist das ...
Stell dir vor du müsstest die EXE auf der Kommandozeile ausführen, da musst du bei einem Pfad mit Leerzeichen auch Anführungszeichen um den Pfad legen.
Stell dir vor du müsstest die EXE auf der Kommandozeile ausführen, da musst du bei einem Pfad mit Leerzeichen auch Anführungszeichen um den Pfad legen.
Alle Antworten findest du im Code.
Zum starten einer Batch habe ich zwei Varianten drin die du je nach Einsatzzweck verwenden kannst, siehe Kommentare zum Programmablauf.
Zum starten einer Batch habe ich zwei Varianten drin die du je nach Einsatzzweck verwenden kannst, siehe Kommentare zum Programmablauf.
'Pfad der zu überwachen ist
Const strPath = "C:\Users\Mustermann\Desktop\Test\LK\frage"
Const strPath2 = "C:\Users\Mustermann\Desktop\Test\LK\frage2"
'Überwachungs-Interval in Sekunden
Const intInterval = "2"
'------------------------------
strDrive = Split(strPath,"\")(0)
strFolder = Replace(Split(strPath,":")(1),"\","\\") & "\\"
strDrive2 = Split(strPath2,"\")(0)
strFolder2 = Replace(Split(strPath2,":")(1),"\","\\") & "\\"
Set fso = WScript.CreateObject("Scripting.Filesystemobject")
Set objShell = CreateObject("Wscript.Shell")
Set objWMIService = GetObject( "winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2" )
strQuery = "Select * From __InstanceOperationEvent" _
& " Within " & intInterval _
& " Where Targetinstance Isa 'CIM_DataFile'" _
& " And ((TargetInstance.Drive='" & strDrive & "'"_
& " And TargetInstance.Path='" & strFolder & "') or "_
& "(TargetInstance.Drive='" & strDrive2 & "'"_
& " And TargetInstance.Path='" & strFolder2 & "'))"
Set colEvents = objWMIService.ExecNotificationQuery (strQuery)
Do
Set objEvent = colEvents.NextEvent()
Set objTargetInst = objEvent.TargetInstance
Select Case objEvent.Path_.Class
Case "__InstanceCreationEvent"
' Batch Skript starten, Variante 1 ohne warten auf das Ende
objShell.Run "cmd /c ""C:\Pfad\script.cmd"""
' Batch Skript starten, Variante 2 mit warten auf das Ende
objShell.Run "cmd /c ""C:\Pfad\script.cmd""",0,True
End Select
Loop
Kleiner Typo in der WMI-Query ... ist oben korrigiert.