Monitor Folder Recursively using WMI

Discussion in 'Scripting' started by Joe Pang, Nov 20, 2008.

  1. Joe Pang

    Joe Pang Guest

    I am writing a VBscript to monitor a folder for file creation and deletion.
    This is a script that I copied from Microsoft Scripting Guy to start with.
    It works well except that it only monitors file activities on the root of
    the folder. I would like it to recursively monitor sub-folders as well.

    Any suggestions?





    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

    Set colMonitoredEvents = objWMIService.ExecNotificationQuery _
    ("SELECT * FROM __InstanceOperationEvent WITHIN 10 WHERE " _
    & "Targetinstance ISA 'CIM_DirectoryContainsFile' and " _
    & "TargetInstance.GroupComponent= " _
    & "'Win32_Directory.Name=""c:\\\\My_Folder""'")

    Do While TRUE
    Set objEventObject = colMonitoredEvents.NextEvent()

    Select Case objEventObject.Path_.Class
    Case "__InstanceCreationEvent"
    Wscript.Echo "A new file was just created: " & _
    objEventObject.TargetInstance.PartComponent
    Case "__InstanceDeletionEvent"
    Wscript.Echo "A file was just deleted: " & _
    objEventObject.TargetInstance.PartComponent
    End Select
    Loop
     
    Joe Pang, Nov 20, 2008
    #1
    1. Advertisements

  2. AFAIK you have to monitor each folder separately. Furthermore the process is
    quite CPU-intensive, like many WMI processes. Have a look at your CPU
    loading in the Task Manager. You'll probably see a substantial spike once
    every 10 seconds.
     
    Pegasus \(MVP\), Nov 20, 2008
    #2
    1. Advertisements

  3. Joe Pang

    Joe Pang Guest

    I came across a few commerical software/shareware that can do the job -
    monitor a folder and its sub-folders recursively and executive a program on
    changes. I was tempted to buy one but none of them really works well. That
    was why I was tempted to create my own script. Since they can do it, I
    thought I could do it using WMI.

    I know it will cause some spike on CPU but so far I don't see any
    significant impact.
     
    Joe Pang, Nov 21, 2008
    #3
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.