Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBScript/JScript/WSH/WMI/HTA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
V1RTuE
372 / 294 / 32
Регистрация: 30.01.2015
Сообщений: 1,259
1

Как создать лог-файл, если при запуске скрипта произошла ошибка?

09.02.2015, 15:20. Просмотров 2194. Ответов 3
Метки нет (Все метки)

Помогите, пожалуйста. Вот есть скрипт для отправки почты:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
strEmail = "mail@mail.ru"
strSMTP = "smtp.mail.ru"
Dim objFSO
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objFSO = Nothing
Set objEmail = CreateObject("CDO.Message")
Dim objTextStream, TXT
Set objTextStream = CreateObject("Scripting.FileSystemObject").GetFile("C:\Report.txt").OpenAsTextStream(1)
TXT = objTextStream.ReadAll()
objTextStream.Close
Set objTextStream = Nothing
objEmail.From = "Рога и копыта <mail@mail.ru>"
objEmail.To = "mail@mail.ru"
objEmail.Subject = " 09-02-2015 17:06:51"
objEmail.Textbody = TXT
objEmail.AddAttachment "C:\START.KEY"
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSMTP
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "mail@mail.ru"
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password"
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
objEmail.Configuration.Fields.Update
objEmail.Send
Как сделать, чтобы при ошибке запуска этого скрипта создавался в этой же папке лог-файл, в который записывалась информация об ошибке?
К примеру, при отсутствии файла, который должен быть прикреплен, выдает ошибку:
Script: C:\sendmail.vbs
Line: 16
Char: 1
Error: The system cannot find the file specified

Code: 80070002
Source: CDO.Message.1
Вот как сделать, чтобы всю эту информацию записать в лог-файл?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2015, 15:20
Ответы с готовыми решениями:

Как запрограммировать запись в лог при выполнении скрипта?
скрипт запускается при входе пользвоателя в систему средствами гпо. но не...

Ошибка при запуске скрипта 800a01a8
Доброго всем дня. Есть скрипт Set objTextFile =...

Сообщение "Ошибка: Недопустимый знак" при запуске скрипта
Здравствуйте. С VBS так вплотную не раотаю, по этому если проблема очевидна то...

В чем ошибка скрипта? Как завершить Процесс_1, если завершился Процесс_2
Здравствуйте уважаемые форумчане! Не получается написать скрипт который бы...

Лог для скрипта
Dim objFS, objFolder, objFile, objItem Dim strPath1, strPath2, strTemp,...

3
ComSpec
3407 / 1951 / 628
Регистрация: 26.02.2014
Сообщений: 1,457
09.02.2015, 20:38 2
Цитата Сообщение от V1RTuE Посмотреть сообщение
Вот как сделать, чтобы всю эту информацию записать в лог-файл?

В начале скрипта поместить такой код:

Visual Basic
1
2
3
4
5
6
7
With WScript
 If InStrRev(LCase(.FullName), LCase("wscript.exe")) Then
  CreateObject("WScript.Shell").Run "cmd /c cscript //nologo """ &_
  .ScriptFullName & """ 2>""errors.log""", 0
  .Quit
 End If
End With
.
2
V1RTuE
372 / 294 / 32
Регистрация: 30.01.2015
Сообщений: 1,259
09.02.2015, 21:40  [ТС] 3
Цитата Сообщение от ComSpec Посмотреть сообщение
В начале скрипта поместить такой код:
Спасибо, работает. Но есть нюанс - не всё показывает. Т.е. в файле я вижу
C:\sendmail.vbs(16, 1) CDO.Message.1: The system cannot find the file specified.
а возможно чтобы еще и записывало "Code: 80070002"? Он ведь есть во всплывающем окне.

И 2 вопрос. Нашел команду On Error Resume Next, при которой игнорирует ошибки и продолжает выполнение скрипта. Можно ли как это совместить с ней? Чтобы и скрипт выполнялся в случае ошибки и саму ошибку записывал в файл?
0
buggydancer
250 / 238 / 16
Регистрация: 31.12.2009
Сообщений: 324
10.02.2015, 12:57 4
V1RTuE, с применением обработки ошибок On Error Resume Next ваш скрипт будет примерно таким:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
on error resume next
 
Dim objFS, objEmail, objLog
Dim strEmail, strSMTP, strLog
Dim objTextStream, TXT, s
 
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objEmail = CreateObject("CDO.Message")
 
strEmail = "mail@mail.ru"
strSMTP = "smtp.mail.ru"
strLog = "log.txt"
 
Set objTextStream = objFS.GetFile("C:\Report.txt").OpenAsTextStream(1)
TXT = objTextStream.ReadAll()
objTextStream.Close
Set objTextStream = Nothing
 
if (objFS.FileExists(strLog)) then
    set objLog = objFS.OpenTextFile(strLog, 8, False)
else
    Set objLog = objFS.CreateTextFile(strLog, False)
end if
 
 
objEmail.From = "Рога и копыта <mail@mail.ru>"
objEmail.To = "mail@mail.ru"
objEmail.Subject = " 09-02-2015 17:06:51"
objEmail.Textbody = TXT
 
 
objEmail.AddAttachment "C:\START.KEY"
 
if Err.Number <> 0 then
    s = ""
    s = "Err.Number: " & Hex(Err.Number) & vbCrLf & _
        "Source: " & Err.Source & vbCrLf & _
        "Reason: " & Err.Description
 
    objLog.Write(s)
 
    msgbox(s)
end if
 
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSMTP
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = strEmail
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "passwd"
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
objEmail.Configuration.Fields.Update
 
 
objEmail.Send
 
if Err.number <> 0 then
    s = ""
    s = "Err.Number: " & Hex(Err.Number) & vbCrLf & _
        "Source: " & Err.Source & vbCrLf & _
        "Reason: " & Err.Description
 
    objLog.Write(s)
 
    msgbox(s)
end if
 
objLog.Close
Set objLog = Nothing
Set objFS = Nothing
только номера строк с ошибками в лог не попадут, т.к. в объекте Err. их нет
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.02.2015, 12:57

Необходимо, чтобы при запуске скрипта запускались определенные вкладки IE и программы и вводились пароли
Здрвствуйте, существует следующая задача: Необходимо написать скрипт...

Произошла непредвиденная ошибка. (42) при запуске программы StairDesigner
Здравствуйте Форумчане. Проблема такая. Установил программу StairDesigner...

Что делать, если при изменении структуры диска произошла ошибка?
При помощи acronis disk director (для windows) поменял жесткий диск с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru