26

このスクリプトの 7 行目と 12 行目で 800A0414 エラーが発生します。

Module Module1

  Dim p

    Sub Main()
        CreateObject("Wscript.Shell").Run("program.bat", 0, True)

        p = Process.GetProcessesByName("program")
        If p.Count > 0 Then
            WScript.Sleep(300000)
        Else
            CreateObject("Wscript.Shell").Run("program clean up.bat", 0, True)
        End If

    End Sub

    Private Function WScript() As Object
        Throw New NotImplementedException
    End Function

End Module

プロセスを開始し、プロセスが終了するまで待ってから、別のバッチ スクリプトを実行するバッチ スクリプトを実行しようとしています。また、コマンド ボックスを表示したくありません。彼らがより簡単な方法である場合は、私に知らせてください。

ご協力いただきありがとうございます

4

3 に答える 3

55

プロシージャの引数リストを括弧で囲むときは、次のCallキーワードを使用する必要があります。

Call CreateObject("WScript.Shell").Run("program.bat", 0, True)

キーワードを省略する場合は、Call括弧も削除する必要があります。

CreateObject("WScript.Shell").Run "program.bat", 0, True
于 2013-02-16T08:08:02.483 に答える
1

これはVBScriptコードではなく、VB.NETのようです。VB.NET (およびその他のメソッド) にShell 関数があります。

とにかく、Runはプログラムによって返されたエラー コードを返します。その結果を変数に格納する場合は、この場合に括弧を使用できます。

Dim lResult As Long
lResult = CreateObject("Wscript.Shell").Run("program.bat", 0, True)

残りは@Helenによって回答されました。

于 2013-02-16T14:11:42.513 に答える