Форум программистов, компьютерный форум, киберфорум
Наши страницы

VBScript/JScript/WSH/WMI/HTA

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
V1RTuE
369 / 291 / 32
Регистрация: 30.01.2015
Сообщений: 1,249
#1

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

09.02.2015, 15:20. Просмотров 1896. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос VBS Как создать лог-файл, если при запуске скрипта произошла ошибка? (VBScript/JScript):

VBS Как запрограммировать запись в лог при выполнении скрипта? - VBScript/JScript
скрипт запускается при входе пользвоателя в систему средствами гпо. но не всегда срабатывает. подскажите, как запрограммировать запись...

Ошибка при запуске скрипта 800a01a8 - VBScript/JScript
Доброго всем дня. Есть скрипт Set objTextFile = objFSO.CreateTextFile(&quot;c:\temp\logsTrafSvc.txt&quot;, True) While 1 strComputer = &quot;.&quot; ...

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

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

VBS Лог для скрипта - VBScript/JScript
Dim objFS, objFolder, objFile, objItem Dim strPath1, strPath2, strTemp, arrSources, arrTargets, i, j Const ForReading = 1 ...

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

3
ComSpec
3397 / 1942 / 627
Регистрация: 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
369 / 291 / 32
Регистрация: 30.01.2015
Сообщений: 1,249
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
Привет! Вот еще темы с ответами:

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

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

Ошибка при запуске mono - "Произошла одна или несколько ошибок" - Mono
здравствуйте! подскажите пожалуйста как избавиться от этой ошибки? заранее спасибо!

Ошибка при запуске скрипта - Bash
Доброго времени суток! Я столкнулся с проблемой: при реализации простейшего цикла for...do...done он в командной строке bash работает...


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

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

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