Что нового

[Автоматизация] запакавать файлы и отправить по email

goldoba

Новичок
Сообщения
19
Репутация
0
Версия AutoIt: 3.
Описание:
Очень срочно нужна помощь! нужно написать скриптик с таким возможностями
проверка папки на определенное количество файлов или размера папки если содержимое true запаковать удалить оригиналы и отправить на email
Примечания: нужно как можно скорее сделать это выручайте товарищи
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Ну вот рабочий скрипт.
У меня работает.
Файл: publ_6_fps.zip
Основной код:
Код:
#AutoIt3Wrapper_Run_AU3Check=n
#include <Array.au3>; for _ArrayDisplay
#include "sendmail.au3"
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.12.0
Author:         alex33
#ce ----------------------------------------------------------------------------

Global $s7zrPath = @ScriptDir&"\7zr.exe"
Global $sDirPath = @ScriptDir&"\myfiles"
Global $sArchivePath = @ScriptDir&'\Archive.7z'
Global $SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl


$SmtpServer = "smtp.yandex.ru"
$FromName = "alex33"
$FromAddress = "[email protected]"
$ToAddress = "a**x.s***[email protected]"
$Subject = "Файлы с компьютера "&@UserName&"@"&@ComputerName
$Body = "Это AutoIt скрипт... Во вложении архив с файлами."&@CRLF&"Оригинал был удалён с компьютера после отправки этого письма."
$AttachFiles = $sArchivePath
$Username = "aleks-samos"
$Password = "**********"
$IPPort = 465
$ssl = 1

Func _main()
If FileExists($sArchivePath) Then FileDelete($sArchivePath); удаляем архив если он существует
Local $result
If Not FileExists($sDirPath&"\") Then Return SetError(1, 0, 0)
Local $aSize = DirGetSize($sDirPath, 1)
If Not IsArray($aSize) Then Return SetError(2, 0, 0)
If $aSize[0] >= 10000 Or $aSize[1] >= 4 Then
RunWait($s7zrPath & ' a "' & $sArchivePath & '" i "' & $sDirPath & '"', '', @SW_HIDE)
_INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl)
If @error <> 0 Then
MsgBox(16, "sendmail", "Ошибка при отправки сообщения", 5)
Else
;FileDelete($sArchivePath); удаляем архив
MsgBox(0, "sendmail", "Сообщение успешно отправлено", 5)
EndIf
EndIf
EndFunc

_main()

Снимок:
Версия V1.0 от 07.07.2014
Автор: alex33
Источник: autoit-script.ru
 
Автор
goldoba

goldoba

Новичок
Сообщения
19
Репутация
0
как скрыть все уведомления?
скрипт работает огромное спасибо осталось только малость допилить
1) что бы скрипт выполнялся каждый час
2) убрать уведомления
3)и после того как упаковал очистил папку
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
goldoba сказал(а):
как скрыть все уведомления?
Закомментировать MsgBox
Чтобы было не
Код:
MsgBox
, а
Код:
;MsgBox
.

Если ты про это...


Добавлено:
Сообщение автоматически объединено:

1) что бы скрипт выполнялся каждый час
2) убрать уведомления
3)и после того как упаковал очистил папку
Сейчас сделаем...
 
Автор
goldoba

goldoba

Новичок
Сообщения
19
Репутация
0
Код:
Global $sArchivePath = @ScriptDir&'\Archive.7z'

изменил на
Код:
Global $sArchivePath = @ScriptDir&'Archive.7z'

теперь корректно работает
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Обновление.
Файл: publ_6_fps_v2.zip
Основной код:
Код:
#AutoIt3Wrapper_Run_AU3Check=n
;#include <Array.au3>; for _ArrayDisplay
#include "sendmail.au3"
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.12.0
Author:         alex33
#ce ----------------------------------------------------------------------------

Global $s7zrPath = @ScriptDir&"\7zr.exe"
Global $sDirPath = @ScriptDir&"\myfiles"
Global $sArchivePath = @ScriptDir&'\Archive.7z'
Global $SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl


$SmtpServer = "smtp.yandex.ru"
$FromName = "alex33"
$FromAddress = "[email protected]"
$ToAddress = "a**x.s***[email protected]"
$Subject = "Файлы с компьютера "&@UserName&"@"&@ComputerName
$Body = "Это AutoIt скрипт... Во вложении архив с файлами."&@CRLF&"Оригинал был удалён с компьютера после отправки этого письма."
$AttachFiles = $sArchivePath
$Username = "aleks-samos"
$Password = "**********"
$IPPort = 465
$ssl = 1

Func _main()
If FileExists($sArchivePath) Then FileDelete($sArchivePath); удаляем архив если он существует
If Not FileExists($sDirPath&"\") Then Return SetError(1, 0, 0)
Local $aSize = DirGetSize($sDirPath, 1)
If Not IsArray($aSize) Then Return SetError(2, 0, 0)
If $aSize[0] >= 10000 Or $aSize[1] >= 4 Then
RunWait($s7zrPath & ' a "' & $sArchivePath & '" i "' & $sDirPath & '"', '', @SW_HIDE)
_INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl)
If @error <> 0 Then
;MsgBox(16, "sendmail", "Ошибка при отправки сообщения", 5)
Else
FileDelete($sDirPath&"\*.*"); удаляем все файлы из папки
FileDelete($sArchivePath); удаляем архив
;MsgBox(0, "sendmail", "Сообщение успешно отправлено", 5)
EndIf
EndIf
EndFunc

_main()
Версия V2.0 от 07.07.2014


Добавлено:
Сообщение автоматически объединено:

goldoba сказал(а):
теперь корректно работает
Макросы возвращают путь без слеша в конце, работать не может...
P.S. Исправь теги code на autoit. Есть кнопка "Сообщить модератору".
madmasles
 
Автор
goldoba

goldoba

Новичок
Сообщения
19
Репутация
0
все работает!!! спасибо большое скрипт выполняется по расписанию?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
goldoba,
Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Глобальный модератор.
 
Автор
goldoba

goldoba

Новичок
Сообщения
19
Репутация
0
очень нужно как реализовать?
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Ну раз очень нужно то в самый конец index файла (после _main()) вставь этот код:
Код:
AdlibRegister("_main", 1000*60*60*2); каждые 2 часа
While 1
Sleep(1000)
WEnd


Потом один раз его запустишь и он каждые два часа будит запускать функцию...
 
Автор
goldoba

goldoba

Новичок
Сообщения
19
Репутация
0
низкий поклон! все работает! спасибо большое :laugh:
 
Верх