【发布时间】:2012-12-31 13:34:43
【问题描述】:
我已将我的一些代码合并到以下代码中:
Option Explicit
Dim oShell : Set oShell = WScript.CreateObject ("WScript.Shell")
Dim FSO : set FSO = CreateObject("Scripting.FileSystemObject")
Dim StartTime,Elapsed
'msgBox(oShell.CurrentDirectory)
'MsgBox(FSO.GetFile(Wscript.ScriptFullName).ParentFolder )
oShell.CurrentDirectory = FSO.GetFile(Wscript.ScriptFullName).ParentFolder
StartTime = Timer
oShell.run "ParentChildLinkFinal.vbs", 1, True
oShell.run "Parent_Child_Merge_final.vbs", 1, True
oShell.run "CycleTime.vbs", 1, True
oShell.run "Baddata.vbs", 1, True
oShell.run "Matrixrefresh.vbs", 1, True
Elapsed = Timer - StartTime
MsgBox("Total time taken to finish this task:" & Elapsed & "in Seconds")
现在这里的一个问题是 - 假设在任何 CycleTime.vbs 文件中发生错误,但是控件然后转到下一个 Baddata.vbs 文件,而不杀死 Main.vbs 文件。那么如何处理这个,如果发生错误,请停止 main.vbs 本身或让执行继续。
按照丹尼尔的说法
"IF NOT oShell.run("CycleTime.vbs", 1, True) = 0 then Wscript.Quit 将替换您当前用于在 Main.vbs 中调用“CycleTime.vbs”的行
IF oShell.run("CycleTime.vbs", 1, True) = 99 then Wscript.Quit 还将替换您当前用于调用“CycleTime.vbs”的行。 不同之处在于您没有指定 CycleTime.vbs 如何出错。 如果它可能以出现运行时错误并停止执行的方式失败,那么您将需要使用第一个选项。 如果发生错误,即您使用错误捕获进行捕获,您可以使用代码退出。就像 WScript.Quit 99。然后您可以通过我提供给您的第二个版本检查脚本是否以该代码结尾。 这实际上取决于您希望如何处理您正在调用的脚本失败。”
为什么采用这种方法
@Daniel True 帮助脚本暂停执行,直到当前的 .vbs 完成。但是我正在寻找任何特殊值,如果我可以从每个 .vbs 返回一个特殊值,main.vbs 将通过它知道它当前的 .vbs 成功完成,让我们开始下一个 .vbs 。但是是的,如果只有成功,那么下一个将开始。目前,我认为任何 .vbs 都发生错误,然后在我关闭错误窗口后,下一个脚本开始运行。因此,我正在尝试至少认为是否可以将任何成功的完整通信发送到main.vbs。那么有可能吗?
【问题讨论】:
-
@Hiten004 这是个好主意吗?说如果发生错误
CycleTime.vbs那么,我可以从Main.vbs捕获它吗? -
使用返回错误码到 Exist Main.vbs stackoverflow.com/questions/187040/…
标签: serialization vbscript wsh