Vbscript batch bei änderung ausführen
Hallo,
ich habe ein Batch-File, das mir einige Arbeiten erleichtert.
Ich möchte aber das Batch-File nicht im Minutentakt antriggern, sondern soll erst angetriggert werden, sobald sich die Datei XYZ ändert. Wie es mir scheint, klappt das mit Batch alleine nicht, ich muss das über VBScript lösen.
Kennt jemand eine Lösung, um eine Dateiänderung zu erfassen, um das Batch anzutriggern?
Danke
ich habe ein Batch-File, das mir einige Arbeiten erleichtert.
Ich möchte aber das Batch-File nicht im Minutentakt antriggern, sondern soll erst angetriggert werden, sobald sich die Datei XYZ ändert. Wie es mir scheint, klappt das mit Batch alleine nicht, ich muss das über VBScript lösen.
Kennt jemand eine Lösung, um eine Dateiänderung zu erfassen, um das Batch anzutriggern?
Danke
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 250145
Url: https://administrator.de/contentid/250145
Ausgedruckt am: 22.11.2024 um 22:11 Uhr
1 Kommentar
Moin chgs2011,
kein Problem:
(Zur Erläuterung wie das Script zu handhaben ist, gibt es am Anfang eine Meldung via MsgBox aus, die du wenn du die Handhabung verstanden hast, entfernen kannst)
WICHTIG: Das Script kann nur lokale Laufwerke überwachen. D.h wenn man eine Datei im Netz überwachen möchte, muss der Pfad als Laufwerk gemappt sein, und der Pfad mit dem Laufwerksbuchstaben angegeben werden.
Grüße Uwe
kein Problem:
(Zur Erläuterung wie das Script zu handhaben ist, gibt es am Anfang eine Meldung via MsgBox aus, die du wenn du die Handhabung verstanden hast, entfernen kannst)
WICHTIG: Das Script kann nur lokale Laufwerke überwachen. D.h wenn man eine Datei im Netz überwachen möchte, muss der Pfad als Laufwerk gemappt sein, und der Pfad mit dem Laufwerksbuchstaben angegeben werden.
'Pfad der zu überwachen ist
strFile = "D:\Daten\datei.csv"
' Auszuführende Batch
strBatch = "C:\Pfad\deineBatch.cmd"
'Abfrage der aufgelaufenen Events in Sekunden
intInterval = 2
'------------------------------
MsgBox "Das Programm überwacht nach klicken auf OK die Datei: '" & strFile & "' alle " & intInterval & " Sekunden auf aufgelaufene Änderungen'" & vbNewLine & "(Um das Programm zu beenden muss der Prozess 'wscript.exe' im Taskmanager beendet werden)",vbInformation
'Objekte erzeugen
Set fso = WScript.CreateObject("Scripting.Filesystemobject")
Set objShell = CreateObject("Wscript.Shell")
Set objWMIService = GetObject( "winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2" )
'Backslashes im Pfad für WQL Query verdoppeln
strFilePath = Replace(strFile,"\","\\")
'WQL Query erzeugen
strQuery = "Select * From __InstanceModificationEvent" _
& " Within " & intInterval _
& " Where Targetinstance Isa 'CIM_DataFile'" _
& " And TargetInstance.Name='" & strFilePath & "'"
'Eventsink registrieren
Set colEvents = objWMIService.ExecNotificationQuery (strQuery)
'Auf Änderungen warten
Do
Set objEvent = colEvents.NextEvent()
Set objTargetInst = objEvent.TargetInstance
'Bei Bedarf lässt sich hier auf die Eigenschaften der Datei zugreifen
'die möglichen Eigenschaften kann man hier nachlesen:
' http://msdn.microsoft.com/en-us/library/aa387236%28v=vs.85%29.aspx
' Beispiel Dateigröße: objTargetInst.FileSize
On Error Resume Next
'Bei Dateiänderung Batch aufrufen -------------------
objShell.Run "cmd /c """ & strBatch & """"
'-----------------------------------------------------
Loop