我在此脚本的第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
我正在尝试运行批处理脚本,启动进程,然后等待进程终止,然后运行另一个批处理脚本。我也不希望显示任何命令框。如果他们更容易,请告诉我。
感谢您的帮助
答案 0 :(得分:48)
当您将过程的参数列表括在括号中时,您必须使用Call
关键字:
Call CreateObject("WScript.Shell").Run("program.bat", 0, True)
如果省略Call
关键字,则还必须删除括号:
CreateObject("WScript.Shell").Run "program.bat", 0, True
答案 1 :(得分:8)
完成之前的说法:
当使用 Call关键字来调用过程(即子或函数)时,参数必须括在括号中,除外当过程没有参数时,括号是可选的。例如所有陈述:
Call test()
Call test
Call test(1,2)
是有效的,但不是这个:
Call test 1
在不使用Call关键字的情况下调用过程时,如果过程具有零个或一个参数或过程具有返回值,则可以使用仅 括号ie是函数),其值在相同的语句中使用。例如所有陈述:
test()
test(1)
test(1,2)
a = test
a = test(1,2)
a = test(test(1,2),2)
有效,但第三个参数有多个参数。如果不清楚,最后一个语句中“test”的内部调用是有效的,因为它的返回值被用作另一个调用的参数。
请注意,无论何时在本文中使用括号,都意味着暗示可能的逗号分隔值。
答案 2 :(得分:0)
对我来说这是一个VB.NET,而不是VBScript代码。 你在VB.NET(和其他方法)中有Shell function。
无论如何,Run会返回程序返回的任何错误代码,如果你 存储导致变量的存储,在这种情况下可以使用括号。
Dim lResult As Long
lResult = CreateObject("Wscript.Shell").Run("program.bat", 0, True)
其余的由@Helen回答。