问题描述
我在VBS文件中有以下代码。如何监视Folder1\Folder2\Folder3\2020
中的文件中以特定字符串开头的文件
file_starts_with = "abc" & Year(Now()) & " " & Month(Now()) & " " & Day(Now())
Set objWMIService = Getobject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceCreationEvent WITHIN 10 _
WHERE Targetinstance ISA 'CIM_DirectoryContainsFile' and TargetInstance.GroupComponent= 'Win32_Directory.Name=""P:\\\\Folder1\\\\Folder2\\\\Folder3\\\\2020""'")
Do
Set objLatestEvent = colMonitoredEvents.NextEvent
'more code here
Loop
解决方法
请参考WMI and File System Monitoring,您可以这样写:
CURRENT_YEAR=Year(Now)
sPath = "F:\Folder1\Folder2\Folder3\"& CURRENT_YEAR
sDrive = split(sPath,":")(0)
sFolders1 = split(sPath,":")(1)
sFolders = REPLACE(sFolders1,"\","\\\\")
TargetFolder = DblQuote(sDrive & ":" & sFolders)
wscript.echo sPath
wscript.echo TargetFolder
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\cimv2")
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _
("Select * From __InstanceCreationEvent Within 2 Where " _
& "Targetinstance Isa 'CIM_DirectoryContainsFile' and " _
& "TargetInstance.GroupComponent= " _
& "'Win32_Directory.Name="& TargetFolder &"'")
' The loop
Do
Set objLatestEvent = colMonitoredEvents.NextEvent
Wscript.Echo objLatestEvent.TargetInstance.PartComponent
Loop
'-------------------------------------------------------------
Function DblQuote(str)
DblQuote = chr(34) & str & chr(34)
End Function
'-------------------------------------------------------------