Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Помогите создать батник для отслеживания изменений файла и отправки сообщения на майл (http://forum.oszone.net/showthread.php?t=179870)

sergeyhopper 05-07-2010 14:49 1447573

Помогите создать батник для отслеживания изменений файла и отправки сообщения на майл
 
Доброго времени суток, есть задача следить за файлом с расширением .dbf и если в течении заданного времени не происходит его изменение, то выходит сообщение и отправляется сообщение на почтовый ящик. Очень надо

sergeyhopper 05-07-2010 14:58 1447581

можно следить за размером и датой изменения

deepred 05-07-2010 18:37 1447723

Под CMD такой сценарий не сделать, ну не работает он с mail.object (на форуме это есть и описание утилиты Blat тоже):

Возможные варианты сценариев можно написать на VBS, JS и PS.

Предлагаю скрипт на vbs (files_control.vbs ) :

Код:

Option Explicit
Dim objFSO, objFile
Dim strPath2SourceFolder, strMessage, strheadlist 
Dim intPrefixб Count, Message, iConf,  Flds

strPath2SourceFolder  = "директория расположения контролируемых файлов" 
strMessage = vbNullString

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")   
For Each objFile In objFSO.GetFolder(strPath2SourceFolder).Files
if UCase(objFSO.GetExtensionName(objFile.Name)) = UCase("dbf") And _
 DateDiff("D", objFile.DateLastModified, Now) = 0 Then

 Count=Count+1
 strMessage = strMessage & Count & ". " & objFSO.GetFileName(objFile.Name) & vbCrLf

Attach = "" & strPath2SourceFolder & objFSO.GetFileName(objFile.Name) _
& "" ' * Получаем имя файла с путем


End If

Message.AddAttachment (Attach) ' * Описываем вложение для отправки

next

strMessage = "Следующие файлы были изменены:" & vbCrLf & strMessage
strMessage = strMessage & vbCrLf & "Всего измененных файлов: "& Count

if Count > 0 Then
' непосредственно блок работы с почтой ---------------------------------------------------------------------------------
Set Message = CreateObject("CDO.Message")
Message.To = "кому@mail.ru"
Message.From = "от_кого@mail.ru"
Message.Subject = "RE: ! Warning!"
Message.TextBody = strMessage
Message.BodyPart.Charset = "windows-1251"

Set iConf = CreateObject("CDO.Configuration")
Set Flds = iConf.Fields
Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.mail.ru"
Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 2525
Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 10
Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "Ваш_пароль"
Flds.Update
Message.Configuration = iConf
Message.Send

End If
WScript.Quit 0

Небольшое пояснение: проверка осуществляется по дате последнего изменения файлов с заданным расширением, после этого формируется список измененных файлов, который и отправляется на e-mail... , твое "заданное время" определяется строкой " DateDiff("D", objFile.DateLastModified, Now) = 0 ", в которой параметр = 0 и определяет этот интервал, можно использовать знаки "> <", например: > 7, т.е. если некие файлы были изменены более 7 дней назад, то жди весточку на почту...

Подсказку для написания подобного скрипта под PS можно найти з д е с ь, для JAVA мне писать лень...



PS: Скрипт обновлен! Все недочеты исключены!
PPS: В сценарий внесена функция отправки измененных файлов, строки выделены красным цветом. [24.08.2010]

sergeyhopper 06-07-2010 08:21 1448018

deepred, огромное тебе спасибо сегодня попробую!

sergeyhopper 06-07-2010 09:29 1448046

скрипт работает отлично, но можно сделать так, если время последнего изменения больше скажем, 2-х часов, то тогда приходит сообщение? и второй момент, как период изменить, скажем не на дни, а на часы? Заранее большое спасибо!!!

deepred 06-07-2010 12:44 1448181

Да можно сделать и по часам...

Смотри, строка DateDiff("D", objFile.DateLastModified, Now) содержит этот временной критерий - переменная "D", вхождением этой переменной могут быть:

"yyyy" - год
"q" - квартал
"m" - месяц
"y" - день года
"d" - день
"w" - день недели
"ww" - неделя года
"h" - час
"n" - минута
"s" - секунда

, т.е. тебе нужно использовать значение интервала "h" > 2

sergeyhopper 06-07-2010 16:11 1448364

deepred, да, спасибо разобрался, только немного скрипт подправили, а то он не зависимо от того менялся файл или нет отправлял сообщения.
Сделал вот так:
Option Explicit
Dim objFSO, objFile
Dim strPath2SourceFolder
Dim intPrefix, strMessage, strheadlist
Dim intErrLevel
Dim Message, iConf, Flds
strPath2SourceFolder = "D:\Temp\1C\"
intErrLevel = 0
strMessage = vbNullString
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
For Each objFile In objFSO.GetFolder(strPath2SourceFolder).Files
if UCase(objFSO.GetExtensionName(objFile.Name)) = UCase("txt") And DateDiff("n", objFile.DateLastModified, Now) > 1 Then
strMessage = strMessage & objFSO.GetFileName(objFile.Name) & vbCrLf
End If
next

if len(strMessage) > 1 then
strMessage = "Внимание, следующие файлы были изменены:"& vbCrLf & strMessage
Set Message = CreateObject("CDO.Message")
Message.To = "почтовый ящик куда придёт сообщение"
Message.From = "что будет указано в графе от"
Message.Subject = "RE: ! Warning!"
Message.TextBody = strMessage
Message.BodyPart.Charset = "windows-1251"
Set iConf = CreateObject("CDO.Configuration")
Set Flds = iConf.Fields
Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp сервер"
Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 10
Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "пароль"
Flds.Update
Message.Configuration = iConf
Message.Send
end if
WScript.Quit 0

Всем спасибо!!!

sergeyhopper 07-07-2010 10:23 1448816

хорошо, спасибо!

lohi1234567 22-09-2010 08:26 1501348

не работает :(
мэйл пишет что не авторизирован. пароль верный адрес тоже.


Время: 11:51.

Время: 11:51.
© OSzone.net 2001-