调用 VBScript 时可能出现语法错误,而无需等到最后



我目前正在通过WScript.Exec从另一个VBScript启动VBScript,而无需等待其结果(工作正常):

Set ObjShell = CreateObject("WScript.Shell")
Set ShellExec = ObjShell.Exec(strFinalCommand)
Set ShellExec = Nothing
Set ObjShell = Nothing

我刚刚发现了一个问题,如果第二个脚本(内部有自己的错误处理)确实存在语法问题。

由于这是在脚本开始运行之前确定的,因此我无法注意到第二个脚本中的错误,而是必须在第一个脚本中处理它。

是否有可能检查调用是否在开始时抛出了错误,如果没有,就让它工作 - 如果出现错误,请停止 WSCRIPT 并获取错误文本。

到目前为止,我还没有找到有关此类特定主题的任何内容。

我已经尝试过ShellExec.ExitCodeShellExec.StdErr,但两者都在第二个脚本完成后才会更新。 如果出现错误,则不会更新两者。 我也尝试了ShellExec.SdtErr.AtEndOfStream,如果出现错误,我的进程就会崩溃。

编辑: 我正在运行的命令wscript.exe D:\...RunAsyncShell.vbs /ParamOne:123 /ParamTwo:ABC还有大约 10 个参数要遵循(由于公司规定无法显示确切的调用)。

你可以做这样的事情:

Set ObjShell = CreateObject("WScript.Shell")
Set ShellExec = ObjShell.Exec(strFinalCommand)
limit = DateAdd("s", 2, Now)
Do While ShellExec.Status = 0 And Now < limit
WScript.Sleep 100
Loop
If ShellExec.ExitCode <> 0 Then
WScript.Echo "Script failed."
End If

这将在启动第二个脚本后等待最多 2 秒,如果进程在该时间范围内返回非零退出代码,则会报告错误。但是,您可能必须使用cscript.exe而不是wscript.exe运行第二个脚本,因为后者将在发生语法错误时显示一个弹出窗口,并且在您单击该弹出窗口之前该过程不会终止。

相关内容

最新更新