|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Помогите создать батник для отслеживания изменений файла и отправки сообщения на майл |
|
CMD/BAT - [решено] Помогите создать батник для отслеживания изменений файла и отправки сообщения на майл
|
Новый участник Сообщения: 34 |
Профиль | Отправить PM | Цитировать Доброго времени суток, есть задача следить за файлом с расширением .dbf и если в течении заданного времени не происходит его изменение, то выходит сообщение и отправляется сообщение на почтовый ящик. Очень надо
|
|
Отправлено: 14:49, 05-07-2010 |
Новый участник Сообщения: 34
|
Профиль | Отправить PM | Цитировать можно следить за размером и датой изменения
|
Отправлено: 14:58, 05-07-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 140
|
Профиль | Отправить 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 Подсказку для написания подобного скрипта под PS можно найти з д е с ь, для JAVA мне писать лень... PS: Скрипт обновлен! Все недочеты исключены! PPS: В сценарий внесена функция отправки измененных файлов, строки выделены красным цветом. [24.08.2010] |
Последний раз редактировалось deepred, 25-08-2010 в 11:03. Причина: Пояснения + доработка + отправка файлов Отправлено: 18:37, 05-07-2010 | #3 |
Новый участник Сообщения: 34
|
Профиль | Отправить PM | Цитировать deepred, огромное тебе спасибо сегодня попробую!
|
Отправлено: 08:21, 06-07-2010 | #4 |
Новый участник Сообщения: 34
|
Профиль | Отправить PM | Цитировать скрипт работает отлично, но можно сделать так, если время последнего изменения больше скажем, 2-х часов, то тогда приходит сообщение? и второй момент, как период изменить, скажем не на дни, а на часы? Заранее большое спасибо!!!
|
|
Отправлено: 09:29, 06-07-2010 | #5 |
Пользователь Сообщения: 140
|
Профиль | Отправить 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
|
Профиль | Отправить 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
|
Профиль | Отправить PM | Цитировать хорошо, спасибо!
|
Отправлено: 10:23, 07-07-2010 | #8 |
Новый участник Сообщения: 24
|
Профиль | Отправить PM | Цитировать не работает
мэйл пишет что не авторизирован. пароль верный адрес тоже. |
Отправлено: 08:26, 22-09-2010 | #9 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] 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 |
|