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

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

Ответить
Настройки темы
CMD/BAT - [решено] Помогите создать батник для отслеживания изменений файла и отправки сообщения на майл

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


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

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


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

Отправлено: 14:49, 05-07-2010

 

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


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

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


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

Отправлено: 14:58, 05-07-2010 | #2



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

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


Пользователь


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

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


Под 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]

Последний раз редактировалось deepred, 25-08-2010 в 11:03. Причина: Пояснения + доработка + отправка файлов

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:37, 05-07-2010 | #3


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


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

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


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

Отправлено: 08:21, 06-07-2010 | #4


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


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

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


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

Отправлено: 09:29, 06-07-2010 | #5


Пользователь


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

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


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

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

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

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

Отправлено: 12:44, 06-07-2010 | #6


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


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

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


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

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

Отправлено: 16:11, 06-07-2010 | #7


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


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

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


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

Отправлено: 10:23, 07-07-2010 | #8


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


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

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


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

Отправлено: 08:26, 22-09-2010 | #9



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Messenger запущен, но нет отправки сообщения консоли vladimir_s79 Microsoft Windows NT/2000/2003 4 29-10-2010 09:39
CMD/BAT - [Решено] Написать батник для копирования одного файла во многие папки рекурсивно. Iodine Скриптовые языки администрирования Windows 5 20-05-2010 22:31
CMD/BAT - [решено] Помогите создать батник для переноса Профиля пользователя. katarsis Скриптовые языки администрирования Windows 13 18-04-2010 14:23
CMD/BAT - помогите создать сетевое подключение с помощью cmd-файла Oleg48 Скриптовые языки администрирования Windows 4 18-10-2009 11:24
[решено] Форма отправки сообщения на PHP с удаленного SMTP Artem-Samsung Вебмастеру 1 14-08-2009 19:11




 
Переход