Тема: VBScript: слежение за содержимым каталога
Автор идеи - Alexbootch.
Пример скрипта, который отслеживает удаление файлов с указанным расширением в указанном каталоге:
strDrive = "C:"
strDir = "\\Temp\\"
strExt = "png"
strComputer = "."
'===================================================================
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMv2")
Set objEvents = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceDeletionEvent WITHIN 5 WHERE " & _
"TargetInstance ISA 'CIM_DataFile'" & _
" AND TargetInstance.Extension = '" & strExt & "'" & _
" AND TargetInstance.Drive = '" & strDrive & "'" & _
" AND TargetInstance.Path = '" & strDir & "'")
Do While(True)
Set objReceivedEvent = objEvents.NextEvent
WScript.Echo Now & " " & objReceivedEvent.TargetInstance.Name
Loop
Фильтр по расширению можно убрать из WMI-запроса и отслеживать таким образом все файлы. Кроме того, можно отслеживать модификацию и создание файлов, используя классы __InstanceCreationEvent и __InstanceModificationEvent полностью аналогично.
Примечание: отслеживание вложенных каталогов в данном случае проблематично, т.к. оператор LIKE со свойством Path в WMI-запросе, похоже, корректно не работает. Если у вас есть идеи, создайте новую тему в разделе Разработка скриптов со ссылкой на тему, которую вы сейчас читаете.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.