Ну вообще, прошу реально помочь, так как гугл изрыл, ответа найти как сделать данную задачу не могу. Есть пара скриптов. Я не программист, хотя во многом могу разобраться. Но данная ситуация поставила меня в тупик!
Скрипты ниже.
Скрипт отправки почты -
'Отправить сообщение с помощью локальной службы 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.Send
Wscript.Quit
Скрипт проверки разницы даты изменения фаила с текущим временем минус три минуты -
PublicFunction OtpravliatLi()
If DateDiff("n", FileDateTime("c:\11.xls"), Date + Time) > 3 Then
MsgBox ("Отправить")
EndIf
EndFunction
В форумных делах я не мастер, и топики как создавать так и писать особо не умею. За жизнь может было постов 25.
Обычно находил информацию, и составлял скрипты для задач сам, но на данный момент, не знаю как реализовать код.
Может я все же что-то не так делаю. Это скорее всего 100%. Добрый товарищ Just!
Ваш код при всех случаях выдает сообщение "письмо", (если раскоментировать msgbox "письмо",
даже если фаил изменялся за последние три минуты.(проверял)
Наверняка нужно переместить данную строку выше, или наоборот ниже. Прошу разъясните!
Так и не получается собрать конструкцию воедино!
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 сервера для отправки почты.
На сколько я могу предположить, сравнение производится просто с цифрой 3, а не с текущим временем минус три минуты, и по этому постоянно приходят письма. Допустим время сейчас 17.27 сравниваем с цифрой три и получаем на почтовый ящик письмо. Или в другом код неверный, а операция сравнения работает правильно! Ребята, покажите мне, где сдесь, что не так. Ломаю голову!
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.getfile("c:\11.xls")
msgbox f.DateLastModified
msgbox Now
msgbox DateDiff("n", f.DateLastModified, Now)
Выдает соответственно
- время изменения
- текущее время
- разницу (сейчас 74)
Правильно ли я составил скрипт который выше? На сколько понимаю, он должен высылать почту только в случае если разница больше трёх минут, и проверка проходит отлично, однако почта присылается в любом случае.
Может можно вывести отправку почты в отдельный кусок кода, и определить отправку почты "переменной"?
Чтобы к примеру при проверки дат
If
дергал переменную(класс, массив), в голове каша, извините меня.
Возможно
IfElse
не нравится, что код идет сразу, и он отрабатывает не обращая внимания на зависимости.
Хотя, такого быть не скорее всего не должно, конечно, но с виду так и происходит.