我正在尝试使用WMI使用vbs脚本监视文件夹中的更改,但是它将是网络驱动器。有几个用户将要执行此脚本,并且某些用户的映射驱动器号可能会有所不同。因此,我想使用不会改变的UNC。
我尝试将strDrive和strFolder更改为UNC和文件夹的每种组合。该脚本可以执行,但是除非我使用驱动器号,否则无法识别任何事件。
' VBScript source code
'WMIFileEvents.vbs
intInterval = "2"
strDrive = "f:" 'or \\mypath\
strFolder = "\\vbs\\"
strComputer = "."
Set objWMIService = GetObject( "winmgmts:" & _
"{impersonationLevel=impersonate}!\\" & _
strComputer & "\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)
WScript.Echo "Monitoring events...[Ctl-C] to end"
Do
Set objEvent = colEvents.NextEvent()
Set objTargetInst = objEvent.TargetInstance
Select Case objEvent.Path_.Class
Case "__InstanceCreationEvent"
WScript.Echo "Created: " & objTargetInst.Name
Case "__InstanceDeletionEvent"
WScript.Echo "Deleted: " & objTargetInst.Name
Case "__InstanceModificationEvent"
WScript.Echo "Modified: " & objTargetInst.Name
End Select
Loop
我很乐意修改此脚本以使其与UNC一起使用,或者很高兴从UNC返回驱动器号(我也不知道该怎么做)。我愿意在VBS之外使用VBA或Shell,如果这样可以更容易解决的话。