Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Проверка времени нахождения файла с расширением .eml в папке

Ответить
Настройки темы
CMD/BAT - Проверка времени нахождения файла с расширением .eml в папке

Новый участник


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

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


День добрый, возможно ли с помощью bat реализовать следующее:
Имеется папка с подпапками и файлами(imap папка), в нее сваливаются сообщения с расширением .eml, если текущее время больше времени создания файла на 5 минут, то это должно записываться в лог файл с указанием времени, даты и имени файла(все имена сообщений уникальны), и далее желательно чтобы этот файл больше не проверялся, иначе как я понимаю лог будет огромный... Заранее огромное спасибо за любую помощь в данном вопросе!

Отправлено: 03:46, 19-08-2014

 

Новый участник


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

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


вверх

Отправлено: 09:55, 09-09-2014 | #31



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


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

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


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

Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adFilterNone = 0


Dim strSourceFolder

Dim objFSO
Dim objFile

Dim objConnection
Dim objRecordSet

Dim objSWbemDateTime

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
	Set objConnection    = WScript.CreateObject("ADODB.Connection")
	Set objRecordSet     = WScript.CreateObject("ADODB.Recordset")
	Set objSWbemDateTime = WScript.CreateObject("WbemScripting.SWbemDateTime")
	
	objConnection.Open _
		"Provider=SQLOLEDB;Server=SQL;Database=SampleDatabase;User Id=sa;Password=password;"
	
	objRecordSet.Open "SELECT * FROM Messages", objConnection, adOpenStatic, adLockOptimistic
	
	For Each objFile In objFSO.GetFolder(strSourceFolder).Files
		Select Case LCase(objFSO.GetExtensionName(objFile.Name))
			Case "msg"
				objRecordSet.Filter = "CreationDate = '" & objFile.DateCreated & "' AND FileName = '" & objFile.Path & "'"
				
				If objRecordSet.RecordCount = 0 Then
					objRecordSet.AddNew Array("CreationDate", "FileName"), Array(objFile.DateCreated, objFile.Path)
				End If
				
				objRecordSet.Filter = adFilterNone
		End Select
	Next
	
	objRecordSet.Close
	objConnection.Close
	
	
	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 = 'msg'"
		
		Do
			WScript.Sleep 100
		Loop
		
		objSWbemSink.Cancel
		
		Set objSWbemSink       = Nothing
		Set objSWbemServicesEx = Nothing
		Set objSWbemLocator    = Nothing
	End With
	
	Set objSWbemDateTime = Nothing
	Set objRecordSet     = Nothing
	Set objConnection    = Nothing
Else
	WScript.Echo "Source folder [" & strSourceFolder & "] not found."
	WScript.Quit 1
End If

Set objFSO = Nothing

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

'=============================================================================
Sub Sink_OnObjectReady(objSWbemObjectEx, objSWbemAsyncContext)
	objConnection.Open _
		"Provider=SQLOLEDB;Server=SQL;Database=SampleDatabase;User Id=sa;Password=password;"
	
	objRecordSet.Open "SELECT * FROM Messages", _
		objConnection, adOpenStatic, adLockOptimistic
	
	With objSWbemObjectEx
		Select Case .Path_.Class
			Case "__InstanceCreationEvent"
				WScript.Echo Now() & " |  | Create:  [" & .TargetInstance.Name & "]"
				
				objSWbemDateTime.Value = .TargetInstance.CreationDate
				objRecordSet.AddNew Array("CreationDate", "FileName"), Array(objSWbemDateTime.GetVarDate, .TargetInstance.Name)
			Case "__InstanceDeletionEvent"
				WScript.Echo Now() & " |  | Delete:  [" & .TargetInstance.Name & "]"
				
				objSWbemDateTime.Value = .TargetInstance.CreationDate
				objRecordSet.Filter = "CreationDate = '" & objSWbemDateTime.GetVarDate & "' AND FileName = '" & .TargetInstance.Name & "'"
				
				If objRecordSet.RecordCount = 1 Then
					objSWbemDateTime.SetFileTime .TIME_CREATED, False
					objRecordSet.Update Array("DeletionDate"), Array(objSWbemDateTime.GetVarDate)
				End If
				
				objRecordSet.Filter = adFilterNone
		End Select
	End With
	
	objRecordSet.Close
	objConnection.Close
End Sub
'=============================================================================

Примерный вид таблицы «Messages» в базе данных «SampleDatabase»:

Размер для поля FileName подберите по Вашим данным. Я использовал SQL Server 2000, для других версий/серверов Connection String может отличаться.
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:35, 09-09-2014 | #32



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Проверка времени нахождения файла с расширением .eml в папке

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Проверка по названию файлов с расширением dbf FantomasAnand Скриптовые языки администрирования Windows 7 05-06-2014 06:58
CMD/BAT - Проверка в каталогах файлов с расширением .tmp upward Скриптовые языки администрирования Windows 13 19-03-2014 00:48
VBS/WSH/JS - Проверка наличия файла в папке в случае отсутствия перезагружать компьютер NickCom Программирование и базы данных 4 19-08-2013 05:13
CMD/BAT - Проверка времени создания файла havenofear Скриптовые языки администрирования Windows 1 17-06-2012 01:06
CMD/BAT - забирать файлы, с конкретным расширением с Ftp сервера с некоторым интервалом времени n.krivtsov Скриптовые языки администрирования Windows 4 06-08-2010 07:15




 
Переход