关于vbscript:CScript / WScript防止错误被阻止

关于vbscript:CScript / WScript防止错误被阻止

CScript/WScript Prevent an error from being blocking

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

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

有想法吗?


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

1
cscript //b scriptname.vbs

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

1
cscript //?

我建议以下内容:

1
cscript //H:CScript

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

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

1
On Error Resume Next

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


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


我建议您将脚本代码放在Sub中-例如DoWork-并对脚本进行编码,例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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,并且调用者将收到一个非零的错误级别。


不要这样做:

vbscript:
On error resume next

english:
"when you have an error, ignore it & just keep going".


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


推荐阅读

    linux切换进程命令?

    linux切换进程命令?,服务,系统,工具,地址,命令,基础,工作,标准,情况,状态,Lin

    linux查询命令进程?

    linux查询命令进程?,系统,名称,总量,情况,状态,进程,材料,工具,电脑,数据,怎

    linux命令如何杀进程?

    linux命令如何杀进程?,状态,系统,暂停,管理,进程,命令,平台,信息,工具,电脑,L

    linux脚本命令教学?

    linux脚本命令教学?,标准,数据,系统,脚本,代码,流程,官网,底部,命令,变量,lin

    linux常用命令查进程?

    linux常用命令查进程?,系统,情况,软件,工具,实时,代码,电脑,地址,总量,状态,

    linux命令注释脚本?

    linux命令注释脚本?,代码,工具,名称,工作,脚本,发行,服务,环境,数据,基础,lin

    linux命令进程状态?

    linux命令进程状态?,系统,状态,进程,命令,数据,管理,软件,名称,信息,参数,Lin

    linux查进程命令软件?

    linux查进程命令软件?,系统,软件,状态,进程,信息,命令,名称,数据,基础,表示,l

    脚本linux上运行命令?

    脚本linux上运行命令?,工具,代码,时间,密码,系统,环境,名字,位置,第三,下来,t

    linux命令错误的是?

    linux命令错误的是?,系统,信息,异常,密码,工具,地址,网络,实时,状态,数据,Lin

    linux修改脚本的命令?

    linux修改脚本的命令?,系统,密码,服务,工作,工具,环境,信息,百度,代码,脚本,

    linux中进程的命令?

    linux中进程的命令?,系统,进程,管理,状态,情况,信息,命令,平台,数据,实时,lin

    linux运行命令的脚本?

    linux运行命令的脚本?,系统,服务,工具,脚本,意外,技术,分析,文件,方法,命令,s

    linux脚本命令单引号?

    linux脚本命令单引号?,系统,工作,美元,地址,命令,信息,情况,标准,管理,引号,l

    执行linux脚本命令行?

    执行linux脚本命令行?,工具,位置,地方,环境,数据,状态,暂停,增长,系统,基础,

    linux暂停脚本命令?

    linux暂停脚本命令?,暂停,系统,状态,工具,命令,进程,材料,电脑,公开,名称,Lin

    linux运行脚本的命令?

    linux运行脚本的命令?,系统,工具,代码,服务,脚本,状态,密码,环境,位置,暂停,l

    linux命令搜索进程?

    linux命令搜索进程?,系统,状态,软件,情况,进程,命令,代码,信息,数据,实时,如

    linux显示错误命令?

    linux显示错误命令?,信息,系统,电脑,状态,时间,环境,命令,搜狐,密码,异常,虚