Доброго вам.
 
задача прилепленного ниже скрипта, делать архив из папки и отправлять на мыло. Необходима некоторая корректировка и доработка, помогите плиз
 
1) исключить отправку файла лога, отправлять только созданный архив
 
2) и наверное самое необходимое прописать меняющийся путь к папке из которой делать архив, а именно, путь такой C:\папка\2010\10\28.html -> C:\ папка \год \ месяц \ файл дата.html. 
 
 
Задача в идеале такова. Нужно каждый день из  C:\ папка \ отправлять файлы за вчерашний день упакованными в архиве. Получается если сегодня 28.10.2010 нужно отправить файл  C:\папка\2010\10\27.html  Ну и понятно с переменной месяца и года путь должен меняться.
 
заранее спасибо за помощь
 
 
Dim dtNow
 
Dim archname
 
Dim LogPath 'Путь к файлу лога этого скрипта
 
Dim LogFile 'Поток текстового файла лога этого скрипта
 
Dim fso
 
Dim fldrpath 
 
Dim folder 
 
Dim filelist 
 
Dim curfile 
 
Dim result
 
Dim messbody
 
 
'Имя архива, без даты.
 
archname = "name.rar"
 
'Работаем с датой.
 
dtNow = Now()
 
archdfile = Year(dtNow) & Right("00" & CStr(Month(dtNow)), 2) & Right("00" & CStr(Day(dtNow)), 2) & "_" & archname
 
'Путь к файлам для добалвения в архив.
 
fldrpath= "C:\Temp\"
 
'Путь и имя файла лога.
 
LogPath = (fldrpath & "1.txt")
 
'Скрипт для отправки сообщения пользователям и архивирования файла. 
 
filePath = (fldrpath & "1.txt")
 
'Путь куда архивируем и имя файлаю archPath = ("H:\distrib\Panasonic\" & archdfile)
 
archway= "C:\"
 
archPath = ( archway & archdfile )
 
'Путь до прграммы архиватора.
 
winRarPath = """C:\Program Files\WinRAR\WinRAR.exe"""
 
'Тема емаил сообщения.
 
themes = "Отправляю копию " & archdfile  & " архива файла " & filePath
 
'Тело сообщения.
 
bodytext = "Отправляю архивную копию файла" & archdfile &  " на почту " 
 
'Укажем нужную кодировку.
 
charset = "windows-1251"
 
'Тут указываем от кого отправляются сообщения. 
 
sender = "mail"
 
'Список или одного получателя кому отправлять сообщения. Есди нужно указать несколько то через запятую.
 
recipients = "mail"
 
'Пароль пароль для отправителя
 
Passwd = "пасс"
 
'Сервер smtp
 
host = "smtp.yandex.ru"
 
 
 
'Архивация файла.
 
Set fs = CreateObject("Scripting.FileSystemObject")
 
Set WshShell = CreateObject("WScript.Shell")
 
        WshShell.Run winRarPath & " a " & archPath & " " & filePath, 0, True
 
 
'Пишем лог.
 
Set FSO = CreateObject("Scripting.FileSystemObject")
 
IF fso.FileExists(LogPath) Then
 
   Set LogFile = FSO.CreateTextFile(LogPath)
 
   LogFile.WriteLine "============Начало лога.======================"
 
   LogFile.WriteLine (Now)
 
   LogFile.WriteLine "============Что архивируем.======================"
 
   LogFile.WriteLine (filePath)
 
 
set fso = createobject("Scripting.FileSystemObject")
 
do while not fso.folderexists(fldrpath)
 
loop
 
set folder=fso.GetFolder(fldrpath) 'установим папку
 
set filelist=folder.files 'прочитаем в коллекцию все подпапки
 
For Each curfile in filelist 'для каждой подпапки сделаем следующее:
 
          result = result & curfile.name & "; Атрибуты: " & curfile.attributes & "; Дата создания: " & curfile.DateCreated & _
 
        "; Дата посл. доступа: " & curfile.DateLastAccessed & "; Дата последнего изменения: " & curfile.DateLastModified & _
 
        "; Диск: " & curfile.drive & "; Находится в: " & curfile.parentfolder & _
 
        "; Полный путь: " & curfile.path & "; Размер: " & curfile.size/1024 & " кб; Тип: " & curfile.type
 
    result=result & vbcrlf & vbcrlf 'думаю из названий назначение функций понятно
 
Next
 
 
LogFile.Write "Здесь записаны результаты опроса папки " & fldrpath & " и всех доступных фаилов" 'напишем
 
LogFile.writeblanklines 2
 
LogFile.write "Обнаружено: " & filelist.count & " фаилов" & vbcrlf & result 'ну и собственно результаты
 
LogFile.WriteLine "============Файл архива, с датой.======================"
 
LogFile.WriteLine (archPath)
 
LogFile.WriteLine "============Конец лога.======================"
 
LogFile.WriteLine (Now)
 
LogFile.Close
 
End if
 
 
WScript.Sleep 60
 
 
set fso = createobject("Scripting.FileSystemObject")
 
do while not fso.folderexists(fldrpath)
 
    loop
 
set folder=fso.GetFolder(fldrpath) 'установим папку
 
set filelist=folder.files 'прочитаем в коллекцию все подпапки
 
For Each curfile in filelist 'для каждой подпапки сделаем следующее:
 
          messbody = messbody & curfile.name 
 
    messbody=messbody & vbcrlf 'думаю из названий назначение функций понятно
 
Next
 
 
Sendmail
 
 
 
Sub sendmail
 
Set objEmail = CreateObject("CDO.Message")
 
objEmail.From = sender 'Тут указываем от кого отправляются сообщения. 
 
objEmail.To = recipients 'Список или одного получателя кому отправлять сообщения.
 
objEmail.Subject = themes 'Тема письма.
 
objEmail.BodyPart.CharSet = charset
 
objEmail.Textbody = bodytext & vbcrlf & "Обнаружен: " & filelist.count & "-файл." & vbcrlf & messbody 'Само письмо!
 
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
 
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
 
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = sender 'Учетная запись.
 
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = Passwd 'Пароль. 
 
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = host 'Сервер.
 
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 'Порт исходящего сервера. 
 
objEmail.AddAttachment archPath
 
objEmail.AddAttachment LogPath
 
objEmail.Configuration.Fields.Update
 
objEmail.Send
 
 
End sub 
Ответить
        |