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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Помогите новичку разобраться со скриптом(vbs).

Ответить
Настройки темы
VBS/WSH/JS - Помогите новичку разобраться со скриптом(vbs).

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


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

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


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

Суть такова: скрипт должен проверять последние изменение в файле (дату или время) сопоставлять с текущем временем и если это время на 20 часов или 1 день меньше настоящего, то отправлять сообщение по внешней почте, в моем случае маил.

Код: Выделить весь код
Dim objFSO, objFile, strFilePath, lngDifference 

strFilePath = "с:\text.txt" 

Set objFSO = CreateObject("Scripting.FileSystemObject") 
If Not objFSO.fileexists(strFilePath) 
Then ExitScript() 
Set objFile = objFSO.getfile(strFilePath) 
lngDifference = DateDiff("h", objFile.DateLastModified, Now) 

If CLng(lngDifference) < 20 Then 
MsgBox "разница: " & lngDifference, ,"не посылать письмо" 
ExitScript() 
Else MsgBox "разница: " & lngDifference, ,"послать письмо" 
'SendMail() 
ExitScript() 

End If Sub 
ExitScript() 
MsgBox "выход" 
Set objFile = Nothing 
Set objFSO = Nothing 
Wscript.quit 
End Sub 

Sub SendMail() 
Const cdoSendUsingPickup = 1 
Set objMessage = CreateObject("CDO.Message") 
objMessage.emailFrom = "******@mail.ru" 
objMessage.Subject = "тема" 
objMessage.From = emailFrom 
objMessage.To = "***@al.ru" 
objMessage.TextBody = "текст" 
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 1 objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.mail.ru" objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465 objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = emailFrom objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "******" 
objMessage.Configuration.Fields.Update 
objMessage.Send 
End Sub
А теперь о проблемах, их 2 (условно разделим скрип на проверить и отправить письмо)

1. Чего я вообще понять не могу это с письмом, оно отправляться вообще не хочет, даже когда отдельным скриптом пишу, может быть дело в mail.ru?

2. Как видно из кода, сначала проверяем разницу (всплывает окно), потом отправляем или нет (всплывает окно), так вот проверка работает отлично, но второе окно не всплывает, вместо него вылетает пустое с надписью "выход".

Отправлено: 10:15, 15-03-2013

 

Аватара для gora

Ушёл из жизни


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

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


Цитата Vector101:
о проблемах »
Плохо скопипастили...
Код: Выделить весь код
Dim objFSO, objFile, strFilePath, lngDifference

strFilePath = "C:\text.txt"

Set objFSO = CreateObject("Scripting.FileSystemObject")
If Not objFSO.fileexists(strFilePath) Then ExitScript()
Set objFile = objFSO.getfile(strFilePath)
lngDifference = DateDiff("h", objFile.DateLastModified, Now)

If CLng(lngDifference) < 20 Then
	MsgBox "разница: " & lngDifference, ,"не посылать письмо"
	ExitScript()
Else
	MsgBox "разница: " & lngDifference, ,"послать письмо"
	SendMail()
	ExitScript()
End If

Sub ExitScript()
	MsgBox "выход"
	Set objFile = Nothing
	Set objFSO = Nothing
	Wscript.quit
End Sub 

Sub SendMail()
	Const EmailFrom = "gora***@list.ru"		' от кого будет отправляться e-mail
	Const EmailPassword = "12345678"		' пароль от e-mail
	Const strSmtpServer = "smtp.list.ru"		' smtp сервер
	Const EmailTo = "gora***@list.ru"		' кому будет отправляться e-mail
	Set objEmail = CreateObject("CDO.Message")
	
	objEmail.From = EmailFrom
	objEmail.To = EmailTo
	objEmail.Subject = "Здесь должен быть текст заголовка"
	objEmail.Textbody = "Текста Вашего письма"
	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") = EmailFrom
	objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = EmailPassword
	objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSmtpServer
	objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
	objEmail.Configuration.Fields.Update
	objEmail.Send
End Sub
Ящики и пароль впишите свои, у меня ящик на list.ru (из семейства mail.ru), все отправилось и пришло.
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:57, 15-03-2013 | #2



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

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


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


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

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


т.е. получается нужно было кое где поставить пробелы и табуляцию?)

Однако по конкретно вашему коду новая ошибка, проблема с выводом второго окна не решена (письмо слать или не слать) - это не столь важно, главное что работает. Но зато я теперь уверен что при выполнение нужных условий он пытается отправить.

А с почтой тоже самое Когда делаю отдельным скриптом - ошибки нет, но и письма нет, а вот в этой общей картине ругаеться на 44 строку, 2 символ, код ошибки 80040213 ( objEmail.Send) - вот эта буква "о" получается.

Отправлено: 14:53, 15-03-2013 | #3


Аватара для gora

Ушёл из жизни


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

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


Цитата Vector101:
эта буква "о" получается »
Нет, дело не в букве. Не может выполнить отправку сообщения. У меня такая ошибка возникает при попытке установить номер порта из Вашего сообщения 465. У меня номер порта 25, проверьте у себя в настройках почты номер порта, а также правильность заполнения всех полей настроек почты и особенно параметра strSmtpServer на соответствие настройкам Вашей почты.

Цитата Vector101:
получается нужно было кое где поставить пробелы и табуляцию »
Нет. У Вас там много ошибок.
Цитата Vector101:
strFilePath = "с:\text.txt" »
Буква диска кириллицей
Цитата Vector101:
Else MsgBox "разница: " & lngDifference, ,"послать письмо" »
Цитата Vector101:
End If Sub »
Цитата Vector101:
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 1 objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.mail.ru" objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465 objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = emailFrom objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "******" »
Слипшиеся строки
Лишние концевые пробелы во всех строках
Переменная emailFrom вовсе не определена.

Последний раз редактировалось gora, 15-03-2013 в 16:08.

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

Отправлено: 15:40, 15-03-2013 | #4


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


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

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


Огромное Вам спасибо gora! Все работает на 25ом порте. Что самое интересное - это то что я эти настройки проверял 100500 раз, на самом mail.ru!!! Уж не знаю в чем беда, но теперь все работает!

СПАСИБО!!!!!

Отправлено: 16:08, 15-03-2013 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Помогите новичку разобраться со скриптом(vbs).

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - Помогите с VBS скриптом coptercor Программирование и базы данных 2 21-09-2011 08:48
MSFT SQL Server - Помогите со скриптом e2site Программирование и базы данных 2 06-05-2009 02:34
VBS/WSH/JS - Проблема со скриптом VBS! voler Программирование и базы данных 5 19-06-2007 14:38
Помогите разобраться новичку Indi Видео и аудио: обработка и кодирование 5 17-02-2007 09:42
Проблема со скриптом на VBS UnDetect Microsoft Windows NT/2000/2003 0 14-04-2006 13:26




 
Переход