Вопрос

В настоящее время WScript отображает всплывающее окно сообщения при возникновении ошибки сценария.Эти сценарии вызываются другими процессами и запускаются на сервере, поэтому никто не может закрыть окно ошибки.

Мне бы хотелось, чтобы сообщение об ошибке было выгружено в STDOUT, а выполнение вернуло вызывающий процесс.При появлении MSGBox все это просто зависает.

Идеи?

Это было полезно?

Решение

Вот как вам следует запускать пакетные задания сценариев:

cscript //b scriptname.vbs

Другие советы

Не используйте WScript;используйте CScript.В командной строке Windows введите следующую команду, чтобы отобразить справку.

cscript //?
Я предлагаю следующее:
cscript //H:CScript
Это сделает CScript вашим интерпретатором сценариев по умолчанию.CScript выводит сообщения на консоль (т. е. стандартный вывод) по вашему желанию.(Он не использует диалог Windows.) Вы также можете попробовать переключатель // b, но я не могу сказать, должен ли это быть запускать для для мышления или нет.Если это постоянный одноразовый переключатель, такой как переключатель //H, то это может сработать для вас;в противном случае вам может потребоваться изменить все ваши удаленные программы, чтобы включить его.Судя по предоставленной вами информации, я думаю, что простое изменение интерпретатора по умолчанию (//H) сделает то, что вы хотите.

Вам также потребуется добавить какую-то обработку ошибок, чтобы скрипт не завершался в случае ошибки.Если вы просто хотите игнорировать ошибки в Visual Basic Scripting Edition, проще всего добавить следующее в начало вашего скрипта.

On Error Resume Next
Видеть http://msdn.microsoft.com/en-us/library/53f3k80h(VS.85).aspx Чтобы получить больше информации.

Используйте WScript.Echo вместо MsgBox.И запустите сценарий, используя CSCRIPT вместо WSCRIPT.

Вы не указали, какой язык используете.Если вы используете VBScript, вы можете написать обработчик ошибок, используя При ошибке... заявление.Если вы используете JScript, вы можете использовать попробуй {} поймай (x) {} блокировать.

не делай этого:

vbscript:При ошибке продолжить дальше

английский:«Когда у вас возникает ошибка, игнорируйте ее и просто продолжайте работу».

Я предлагаю вам поместить код вашего сценария в Sub - например. DoWork - и закодируйте свой скрипт примерно так:

On Error Resume Next

DoWork

If Err.Number <> 0 Then

    If "CSCRIPT.EXE" = UCase( Right( WScript.Fullname, 11 ) ) Then
        WScript.StdErr.Write Err.Number & ": " & Err.Description
    Else
        WScript.Echo Err.Number & ": " & Err.Description
    End If
    WScript.Quit 1
End If

Private Sub DoWork

    ... your code ...

End Sub

Таким образом, когда вы запускаете свой скрипт, используя cscript //b, и он завершится неудачно, вы получите сообщение об ошибке на stderr, а вызывающая сторона получит ненулевой уровень ошибки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top