调用VBScript时可能会出现语法错误,而不必等到最后

时间:2019-06-12 09:46:38

标签: 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,如果出现错误,它会使我的进程崩溃。

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

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

Form1

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