Проверка разницы текущего времени и даты изменения фаила

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
woinc
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 26.04.2011 (Вт) 10:47

Проверка разницы текущего времени и даты изменения фаила

Сообщение woinc » 26.04.2011 (Вт) 10:49

Добрый день! Уже пару дней бьюсь над задачей, которая заключается в следующем.

Есть фаил c:\11.xls к примеру. Текущее время 11.30 утра. Если фаил не изменялся последние 3 или 5 минут высылать на почту сообщение.

Есть VBS скрипт отправки почты - он работает.

Есть скрипт проверки разници времени изменения с текущей датой минус 3 минуты - работает или нет не знаю.

Необходимо объединить и сделать работающим скрипт выполняющий данную задачу.

Могу вложить скрипты аттачем, или в тело сообщения.

Очень прошу помочь!

С уважением, WestSouthnight.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Проверка разницы текущего времени и даты изменения фаила

Сообщение Хакер » 26.04.2011 (Вт) 11:38

woinc писал(а):Есть фаил

Fail, согласен. Полный fail.

С вопросами полностью о VBScript — сюда.

woinc писал(а):Необходимо объединить и сделать работающим скрипт выполняющий данную задачу.

С такой постановкой вопроса — сюда (с указанием цены и срока).

woinc писал(а):Очень прошу помочь!

С просьбами помочь, без указания того, чем, собственно, помочь — сюда.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

woinc
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 26.04.2011 (Вт) 10:47

Re: Проверка разницы текущего времени и даты изменения фаила

Сообщение woinc » 26.04.2011 (Вт) 16:34

Спасибо товарищу Just который дал кусок кода для проверки разницы текущего времени с временем модификации.

Код: Выделить всё
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.getfile("c:\11.xls")
Diff = DateDiff("n", f.DateLastModified, Now)
'Diff = DateDiff("n", f.DateCreated, Now)
'Diff = DateDiff("n", f.DateLastAccessed, Now)
'yyyy — Год
'm  — Месяц
'd  — День
'h  — Часы
'n  — Минуты
 
If Diff > 3 Then
msgbox "письмо"
'Отправить сообщение с помощью локальной службы SMTP
Const cdoSendUsingPickup = 1   
Set objMessage = CreateObject("CDO.Message")   
' Тема сообщения и адрес отправителя
objMessage.Subject = "Тема письма"   
objMessage.From = "monitoring@domain.com"
' Получатели письма указываются через " ; "
objMessage.To = "admin-group@domain.com"   
' Содержимое тела письма.   
objMessage.TextBody = "Тело письма"
' Добавляем файл - вложение для отправки отчета по EMail
objMessage.AddAttachment "C:\11.xls"
' Секция настроек SMTP сервера для отправки почты.   
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2   
' Имя или IP адрес SMTP Server
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "192.168.0.2"
' Тип используемой авторизации, NONE, Basic (Base64 encoded), NTLM
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = NTLM
' SMTP server
objMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "mail.domain.com"   
' Авторизация на SMTP server
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "monitoring@domain.com"
' Пароль SMTP server
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = ""
' Порт SMTP Server port (обычно 25, но может быть и другим)   
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25   
' Использование SSL для соединения (False или True)   
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False
' Время ожидания соединения с почтовым сервером
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
' Сохранить настройки CDO для отправки сообщения
objMessage.Configuration.Fields.Update
' Отправить созданное почтовое сообщение с вложением по указанному адресу
objMessage.Send
Wscript.Quit


На данный момент этот скрипт высылает почту в любом случае. Прошу покажите, где ошибка. Нужно, чтобы скрипт высылал почту только в том случае, если фаил не изменялся последние 3 минуты. Подобного данному скрипта в интернете я не нашел. Это необходимо для мониторинга. Подобной программы, в которой реализуется данный метод проверки и оповещения при заданных параметрах я не нашел. Спасибо за ответы.

Возможно нужно подругому его скомпоновать, или по другому вызывать отправку письма. Не знаю, что и делать. Гугл не хочет мне помогать.

С уважением, WestSouthnight.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Проверка разницы текущего времени и даты изменения фаила

Сообщение Хакер » 26.04.2011 (Вт) 16:37

woinc писал(а):Прошу покажите, где ошибка.

Не вижу End if.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

woinc
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 26.04.2011 (Вт) 10:47

Re: Проверка разницы текущего времени и даты изменения фаила

Сообщение woinc » 26.04.2011 (Вт) 16:50

Код: Выделить всё
End if
в моем скрипте есть - прошу прощения, ошибся в посте. Все теже симптомы.

С уважением, WestSouthnight.

woinc
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 26.04.2011 (Вт) 10:47

Re: Проверка разницы текущего времени и даты изменения фаила

Сообщение woinc » 26.04.2011 (Вт) 23:25

Товарищ Just очень помог, написав работающий скрипт! Спасибо ему огромное!

С уважением, WestSouthnight.

woinc
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 26.04.2011 (Вт) 10:47

Re: Проверка разницы текущего времени и даты изменения фаила

Сообщение woinc » 27.04.2011 (Ср) 17:50

Код: Выделить всё
Dim objFSO, objFile, strFilePath, lngDifference

strFilePath = "c:\11.xls"


Set objFSO = CreateObject("Scripting.FileSystemObject")
If Not objFSO.fileexists(strFilePath) Then ExitScript()

Set objFile = objFSO.getfile(strFilePath)
lngDifference = DateDiff("n", objFile.DateLastModified, Now)


If CLng(lngDifference) < 3 Then
  MsgBox "разница: " & lngDifference, , "не посылать письмо"
  ExitScript()
Else
  MsgBox "разница: " & lngDifference, , "послать письмо"
  'SendMail()
  ExitScript()
End If




Sub ExitScript()
MsgBox "выход"
Set objFile = Nothing
Set objFSO = Nothing
Wscript.quit
End Sub


Sub SendMail()
Const cdoSendUsingPickup = 1
Set objMessage = CreateObject("CDO.Message")
objMessage.Subject = "Тема письма"
objMessage.From = "monitoring@domain.com"
objMessage.To = "admin-group@domain.com"
objMessage.TextBody = "Тело письма"
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "192.168.0.2"
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = NTLM
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "mail.domain.com"
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "monitoring@domain.com"
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = ""
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
objMessage.Configuration.Fields.Update
objMessage.Send
End Sub


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Google-бот, Mail.ru [бот] и гости: 55

    TopList