CScript / WScript防止错误被阻止

时间:2020-03-06 14:19:44  来源:igfitidea点击:

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

我想要的是将错误消息转储到STDOUT,然后执行以返回调用过程。弹出为MSGBox只是挂了整个事情。

有想法吗?

解决方案

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

不要这样做:

vbscript:
出现错误时,继续下一个

英语:
"当我们遇到错误时,请忽略它并继续前进。"

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

cscript //?

我建议以下内容:

cscript //H:CScript

这将使CScript成为默认脚本解释器。 CScript可根据需要将消息打印到控制台(即stdout)。 (它不使用对话框窗口。)
我们可能还想尝试// B开关,但是我不能确定是否必须按脚本运行。如果它像// H开关一样是持久的一次性开关,那么它可能对我们有用;如果不是,则可能需要修改所有远程程序以包含它。从我们提供的信息来看,我认为只需更改默认解释器(// H)即可完成我们想要的操作。

我们还需要添加某种错误处理,以防止脚本终止于错误。在Visual Basic Sc​​ripting Edition中,如果只想忽略错误,最简单的操作是在脚本顶部添加以下内容。

On Error Resume Next

有关更多信息,请参见http://msdn.microsoft.com/zh-cn/library/53f3k80h(VS.85).aspx。

使用WScript.Echo而不是MsgBox。并且,使用CSCRIPT而不是WSCRIPT运行脚本。

这是我们应该运行脚本批处理作业的方式:

cscript //b scriptname.vbs