1 (изменено: BANDI-OGA, 2011-02-04 14:33:59)

Тема: VBS: Слежение за содержанием каталога

strDrive = "F:"
strDir = "\\Films\\"
strExt = "avi"
strComputer = "."
'===================================================================
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMv2") 
Set objEvents = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceCreationEvent 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

Помогите сделать, чтоб скрипт писал лог в файл?
И можно сделать, чтоб отслеживал сразу удаление, создание и изменение файла?

2 (изменено: Dmitrii, 2011-02-04 17:23:59)

Re: VBS: Слежение за содержанием каталога

BANDI-OGA пишет:

Помогите сделать, чтоб скрипт писал лог в файл...

Коллега, Вы ведь уже получили на другом форуме совет использовать средства FSO. Что мешает заглянуть в справку по VB(S,A) или поискать нужный материал на форуме (ведь это же так несложно). Ждёте готовое решение?

BANDI-OGA пишет:

И можно сделать, чтоб отслеживал сразу удаление, создание и изменение файла?

Для этого замените класс __InstanceCreationEvent на класс __InstanceOperationEvent и добавьте процедуру определения действия над объектом.

Set objEvents = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceCreationEvent 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
    Select Case objReceivedEvent.Path_.Class
        Case "__InstanceCreationEvent": strAction = "создание"
        Case "__InstanceDeletionEvent": strAction = "удаление"
        Case "__InstanceModificationEvent": strAction = "изменение"
    End Select
    WScript.Echo Now & " " & objReceivedEvent.TargetInstance.Name & vbNewLine & _
                "Действие над объектом: " & strAction
Loop

3

Re: VBS: Слежение за содержанием каталога

Коллега, Вы ведь уже получили на другом форуме совет использовать средства FSO. Что мешает заглянуть в справку по VB(S,A) или поискать нужный материал на форуме (ведь это же так несложно). Ждёте готовое решение?

Я не совсем волоку в этом, только учусь. Пытался со справкой, но не получилось, поэтому написал на другом форуме.

4

Re: VBS: Слежение за содержанием каталога

BANDI-OGA пишет:

... Пытался со справкой, но не получилось...

Пример:

strPath = "C:\Temp\Log.txt"
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objFile = objFS.CreateTextFile(strPath, True)
Do
    Set objReceivedEvent = objEvents.NextEvent
    Select Case objReceivedEvent.Path_.Class
        Case "__InstanceCreationEvent": strAction = "создание"
        Case "__InstanceDeletionEvent": strAction = "удаление"
        Case "__InstanceModificationEvent": strAction = "изменение"
    End Select
    WScript.Echo Now & " " & objReceivedEvent.TargetInstance.Name & vbNewLine & _
                "Действие над объектом: " & strAction
    objFile.WriteLine Now & " " & objReceivedEvent.TargetInstance.Name & " -> " & strAction
Loop
objFile.Close
Set objFile = Nothing
Set objFS = Nothing