Форум программистов, компьютерный форум, киберфорум
VBScript/JScript/WSH/WMI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/25: Рейтинг темы: голосов - 25, средняя оценка - 4.84
967 / 334 / 47
Регистрация: 30.01.2015
Сообщений: 1,446
VBS

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

09.02.2015, 15:20. Показов 4742. Ответов 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.02.2015, 15:20
Ответы с готовыми решениями:

Spyder: При запуске ядра произошла ошибка
Возможно, проблема связана с символами юникода в адресной строке, но это не точно. Как исправить? При запуске ядра произошла ошибка ...

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

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

3
 Аватар для ComSpec
3463 / 2001 / 635
Регистрация: 26.02.2014
Сообщений: 1,457
09.02.2015, 20:38
Цитата Сообщение от 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
967 / 334 / 47
Регистрация: 30.01.2015
Сообщений: 1,446
09.02.2015, 21:40  [ТС]
Цитата Сообщение от ComSpec Посмотреть сообщение
В начале скрипта поместить такой код:
Спасибо, работает. Но есть нюанс - не всё показывает. Т.е. в файле я вижу
C:\sendmail.vbs(16, 1) CDO.Message.1: The system cannot find the file specified.
а возможно чтобы еще и записывало "Code: 80070002"? Он ведь есть во всплывающем окне.

И 2 вопрос. Нашел команду On Error Resume Next, при которой игнорирует ошибки и продолжает выполнение скрипта. Можно ли как это совместить с ней? Чтобы и скрипт выполнялся в случае ошибки и саму ошибку записывал в файл?
0
251 / 239 / 16
Регистрация: 31.12.2009
Сообщений: 324
10.02.2015, 12:57
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.02.2015, 12:57
Помогаю со студенческими работами здесь

Произошла ошибка при попытке создать объект
Доброго времени суток, форумчане! Нужна ваша помощь. При помещении UserControl на форму через elementHost, выкидывает ошибку такого...

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

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

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

При подписи произошла ошибка: Файл SignTool.exe не найден
Решился таки почистить компьютер, проект был скопирован в облачное хранилище(создан в 15-й студии). Была переустановлена винда (версия не...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru