コードの一部を以下にまとめました。
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")
ここでの懸念事項の 1 つは、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 のように。次に、提供した 2 番目のバージョンを使用して、スクリプトがそのコードで終了したかどうかを確認できます。最終的には、呼び出しているスクリプトの失敗をどのように処理するかにかかっています。」
そのようなアプローチの理由
@DanielTrue
は、現在の .vbs が終了するまでスクリプトの実行を中断するのに役立ちます。main.vbs
しかし、現在の .vbs が正常に完了したことを知るために、各 .vbs から特別な値を返すことができる場合、特別な値を探しています。次の .vbs を開始しましょう。しかし、そうです、成功さえすれば次のことが始まります。現在、.vbs のいずれかからエラーが発生したと仮定して、エラー ウィンドウを閉じるとすぐに、次のスクリプトの実行が開始されました。だから私は、成功した完全なコミュニケーションがに送られるかどうか、少なくとも考えようとしていmain.vbs
ます。それで、それは可能ですか?