Serialization 是否可以在.vbs脚本中进行序列化?

Serialization 是否可以在.vbs脚本中进行序列化?,serialization,vbscript,wsh,Serialization,Vbscript,Wsh,我已将我的一些代码组合到以下代码中: Option Explicit Dim oShell : Set oShell = WScript.CreateObject ("WScript.Shell") Dim FSO : set FSO = CreateObject("Scripting.FileSystemObject") Dim StartTime,Elapsed 'msgBox(oShell.CurrentDirectory) 'Msg

我已将我的一些代码组合到以下代码中:

    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
文件本身或让执行继续

根据丹尼尔的要求

如果不是oShell.run(“CycleTime.vbs”,1,True)=0,则Wscript.Quit将替换当前用于在Main.vbs中调用“CycleTime.vbs”的行

如果oShell.run(“CycleTime.vbs”,1,True)=99,那么Wscript.Quit也将替换当前用于调用“CycleTime.vbs”的行。 区别在于您没有指定CycleTime.vbs出错的方式。 如果它可能会以运行时错误的方式失败,并且只是停止执行,那么您应该使用第1个选项。 如果发生错误,您可以使用错误捕获来捕获,您可以使用代码退出。例如WScript.quit 99。然后您可以通过我提供给您的第二个版本检查脚本是否以该代码结束。 这实际上取决于您希望如何处理正在调用的脚本的失败。”

为什么采用这种方法


@Daniel
True
帮助脚本暂停执行,直到当前的.vbs完成。但是我正在寻找任何特殊值,如果我可以从每个.vbs返回一个特殊值,
main.vbs
将通过该值知道其当前的.vbs已成功完成,让我们启动下一个.vbs。但是,是的,只有成功了,下一步才会开始。目前,我认为假设某个.vbs出现错误,那么一旦我关闭错误窗口,下一个脚本就开始运行。因此,我至少在想,如果成功,完整的通信可以发送到
main.vbs
。那么有可能吗?

在main.vbs中使用vbscript错误处理来停止代码并退出main.vbs

有关详细信息,请单击此链接:

样本:

On Error Resume myErrCatch
'Do step 1
'Do step 2
'Do step 3

myErrCatch:
'log error
Resume Next

从.VBS创建一个文件,然后退出Main.VBS

DIM returnValue
 returnValue = 99
 WScript.Quit(returnValue)

在main.vbs中使用vbscript错误处理来停止代码并退出main.vbs

有关详细信息,请单击此链接:

样本:

On Error Resume myErrCatch
'Do step 1
'Do step 2
'Do step 3

myErrCatch:
'log error
Resume Next

从.VBS创建一个文件,然后退出Main.VBS

DIM returnValue
 returnValue = 99
 WScript.Quit(returnValue)

要扩展Hiten所指示的内容,您需要在Main.vbs中检查调用的.vbs文件的返回值。您可以通过利用

例如:

而不是执行
oShell.run“CycleTime.vbs”,1,True
do

如果不是oShell.run(“CycleTime.vbs”,1,True)=0,则Wscript.Quit

如果由于运行时错误而暂停
CycleTime.vbs
(运行脚本的调用将返回false),这将退出当前的执行线程

现在,如果您能够在CycleTime.vbs中优雅地处理错误,则可以在关闭错误时使用
Wscript.Quit code
发送消息,如另一个答案中所述

因此,如果您想在CycleTime.vbs中优雅地处理错误,仍然可以指示发生了错误。只需使用以下内容检查主脚本中的返回代码:

If err then
    'Exit script with code 99 to indicate an error occurred.
    Wscript.Quit 99
End if
如果oShell.run(“CycleTime.vbs”,1,True)=99,则Wscript.Quit

这样,如果
CycleTime.vbs
以代码99结束,脚本将结束。如果CycleTime.vbs中有如下代码,则会发生这种情况:

If err then
    'Exit script with code 99 to indicate an error occurred.
    Wscript.Quit 99
End if

要扩展Hiten所指示的内容,您需要在Main.vbs中检查调用的.vbs文件的返回值。您可以通过利用

例如:

而不是执行
oShell.run“CycleTime.vbs”,1,True
do

如果不是oShell.run(“CycleTime.vbs”,1,True)=0,则Wscript.Quit

如果由于运行时错误而暂停
CycleTime.vbs
(运行脚本的调用将返回false),这将退出当前的执行线程

现在,如果您能够在CycleTime.vbs中优雅地处理错误,则可以在关闭错误时使用
Wscript.Quit code
发送消息,如另一个答案中所述

因此,如果您想在CycleTime.vbs中优雅地处理错误,仍然可以指示发生了错误。只需使用以下内容检查主脚本中的返回代码:

If err then
    'Exit script with code 99 to indicate an error occurred.
    Wscript.Quit 99
End if
如果oShell.run(“CycleTime.vbs”,1,True)=99,则Wscript.Quit

这样,如果
CycleTime.vbs
以代码99结束,脚本将结束。如果CycleTime.vbs中有如下代码,则会发生这种情况:

If err then
    'Exit script with code 99 to indicate an error occurred.
    Wscript.Quit 99
End if

@Hiten004这是个好主意吗?假设发生错误
CycleTime.vbs
,那么我可以从
Main.vbs
捕获它吗?使用返回错误代码存在Main.vbs@Hiten004这是个好主意吗?假设发生错误
CycleTime.vbs
,那么我可以从
Main.vbs
捕获它吗?使用返回错误代码存在Main.vbs VBScript不支持错误恢复时的
myErrCatch
类语法。您能告诉我为什么退出代码被设置为99吗?VBScript支持错误处理,您可以输入任何数字。。99是一个示例。是的,我指的是您编写的方式,它可能在VBA中,而不是在vbscript中?我想是的<代码>出错时继续下一步和
出错时转到0
仅受VBScript支持!你能用你的建议来构造我的代码吗?我有点困惑我该如何用我的代码来编写你的代码!VBScript不支持出现错误时的
恢复myErrCatch
类语法。您能告诉我为什么退出代码被设置为99吗?VBScript支持错误处理,您可以输入任何数字。。99是一个示例。是的,我指的是您编写的方式,它可能在VBA中,而不是在vbscript中?我想是的<代码>出错时继续下一步和
出错时转到0
仅受VBScript支持!C