Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


kotlyar, вот примерная болванка кода:
читать дальше »
Код: Выделить весь код
Option Explicit

Dim strSourceFolder

Dim objFSO

Dim strComputer

Dim objSWbemLocator
Dim objSWbemServicesEx
Dim objSWbemSink


strSourceFolder = "C:\Песочница\052\sib.biz.imap"

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

If objFSO.FolderExists(strSourceFolder) Then
	strComputer = "."
	
	Set objSWbemLocator    = WScript.CreateObject("WbemScripting.SWbemLocator")
	Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")
	Set objSWbemSink       = WScript.CreateObject("WbemScripting.SWbemSink", "Sink_")
	
	With objSWbemServicesEx.Get("Win32_Directory.Name='" & Replace(strSourceFolder & "\.", "\", "\\") & "'")
		objSWbemServicesEx.ExecNotificationQueryAsync objSWbemSink, _
			"SELECT * FROM __InstanceOperationEvent WITHIN 1 WHERE " & _
			"TargetInstance ISA 'CIM_DataFile' AND " & _
			"TargetInstance.Drive = '" & .Drive & "' AND " & _
			"TargetInstance.Path = '"  & .Path  & "' AND " & _
			"TargetInstance.Extension = 'eml'"
		
		Do
			WScript.Sleep 100
		Loop
		
		objSWbemSink.Cancel
		
		Set objSWbemSink       = Nothing
		Set objSWbemServicesEx = Nothing
		Set objSWbemLocator    = Nothing
	End With
Else
	WScript.Echo "Source folder [" & strSourceFolder & "] not found."
	WScript.Quit 1
End If

Set objFSO = Nothing

WScript.Quit 0
'=============================================================================

'=============================================================================
Sub Sink_OnObjectReady(objSWbemObjectEx, objSWbemAsyncContext)
	With objSWbemObjectEx
		Select Case .Path_.Class
			Case "__InstanceCreationEvent"
				WScript.Echo Now() & " |  | Create:  [" & .TargetInstance.Name & "]"
			Case "__InstanceDeletionEvent"
				WScript.Echo Now() & " |  | Delete:  [" & .TargetInstance.Name & "]"
		End Select
	End With
End Sub
'=============================================================================

Запускать под «cscript.exe». Здесь я сделал просто вывод даты/времени и имени файла для того, чтобы оценить работоспособность скрипта и верность нашего подхода.

Насчёт записи в лог-файл. Писать-то мы можем. Но далее будет проблема, как оттуда корректно и эффективно извлечь эту информацию. Я бы предпочёл писать в базу данных. У Вас есть SQL-сервер? Можем его использовать?
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:25, 22-08-2014 | #16