【问题标题】:CScript/WScript Prevent an error from being blockingCScript/WScript 防止错误被阻塞
【发布时间】:2010-09-10 12:11:19
【问题描述】:

目前,当出现脚本错误时,WScript 会弹出消息框。这些脚本由其他进程调用,并在服务器上运行,因此没有人可以关闭错误框。

我想要的是将错误消息转储到 STDOUT,并执行以返回调用进程。作为一个 MSGBox 弹出只是挂起整个事情。

想法?

【问题讨论】:

    标签: vbscript automation wsh


    【解决方案1】:

    这就是您运行脚本批处理作业的方式:

    cscript //b scriptname.vbs
    
    【解决方案2】:

    不要使用 WScript;使用 CScript。在 Windows 命令提示符下,键入以下内容以显示帮助。

    cscript //?
    我建议如下:
    cscript //H:CScript
    这将使 CScript 成为您的默认脚本解释器。 CScript 根据需要将消息打印到控制台(即标准输出)。 (它不使用对话窗口。) 您可能还想尝试 //B 开关,但我不知道是否必须按脚本运行。如果它是像 //H 开关那样持久的一次性开关,那么这可能对您有用;如果没有,您可能需要修改所有远程程序以包含它。根据您提供的信息,我认为只需更改默认解释器(//H)就可以满足您的需求。

    您还需要添加某种错误处理以防止脚本因错误而终止。在 Visual Basic Sc​​ripting Edition 中,如果您只想忽略错误,最简单的做法是将以下内容添加到脚本顶部。

    On Error Resume Next
    请参阅http://msdn.microsoft.com/en-us/library/53f3k80h(VS.85).aspx 了解更多信息。

    【讨论】:

      【解决方案3】:

      使用WScript.Echo 代替MsgBox。并且还使用Cscript 而不是Wscript 运行脚本。

      【讨论】:

        【解决方案4】:

        您尚未说明您使用的语言。如果您使用的是 VBScript,则可以使用 On Error... 语句编写错误处理程序。如果您使用的是 JScript,则可以使用 try {} catch (x) {} 块。

        【讨论】:

          【解决方案5】:

          我建议你把你的脚本代码放在一个 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,并且调用者将收到一个非零错误级别。

          【讨论】:

            【解决方案6】:

            不要这样做:

            vb脚本: 出错时继续下一步

            英文: “当你遇到错误时,忽略它并继续前进”。

            【讨论】:

              猜你喜欢
              • 2015-04-28
              • 2011-09-02
              • 2018-03-10
              • 2015-04-22
              • 2016-10-26
              • 1970-01-01
              • 1970-01-01
              • 2021-10-29
              • 1970-01-01
              相关资源
              最近更新 更多