我正在用Java调用VBS这样的
public class CallVBS {
public static void main(String[] args) {
try {
Runtime.getRuntime().exec("wscript C:\\openURL.vbs");
} catch (IOException e) {
System.exit(0);
}
}
}
如果我的openURL.vbs包含类似
的方法Sub Test(Name,Age,Sex)
如何使用Java
中的参数调用VBS中的上述方法答案 0 :(得分:2)
所以只是对AlexR进行一些改动,因为我认为有一些事情可以用来纠正。
比如说我们有一个名为MyVBScript.vbs的VBS文件
MyVBScript.vbs的内容如下:
name = WScript.Arguments.Item(0)
age = WScript.Arguments.Item(1)
sex = WScript.Arguments.Item(2)
Call Test(name, age, sex)
请记住,集合的索引从0开始,作为第一次出现
现在在Java代码中调用这个VBS文件,我们将拥有以下内容:
Runtime.getRuntime().exec("wscript C:\\MyVBScript.vbs " + name + " " + age + " " + sex
感谢AlexR的原始答案,但我觉得需要一点澄清。我希望这有助于人们。我个人在我的Java测试工具中使用它作为启动Quick Test Professional的方法。
答案 1 :(得分:0)
你的问题主要不是关于java而是关于VBS。看一下这个discussion,它描述了如何在VBS中读取命令行参数。通常,您必须使用内置对象Wscript.Arguments
。解析脚本“main”部分中的参数并调用您的subrutine Test
,例如
Set name = Wscript.Arguments(1)
Set age = Wscript.Arguments(2)
Set sex = Wscript.Arguments(3)
Call Test(name, age, sex)
现在您可以从java调用脚本,如下所示:
Runtime.getRuntime().exec("wscript C:\\openURL.vbs " + name + " " + age + " " + sex);
答案 2 :(得分:0)
可能的getURL.vbs
可能如下所示:
Option Explicit
WScript.Echo "openURL.vbs"
Dim a0 : a0 = "Def. A. Ult"
If 1 <= WScript.Arguments.Count Then a0 = WScript.Arguments(0)
Dim a1 : a1 = "47.11"
If 2 <= WScript.Arguments.Count Then a1 = WScript.Arguments(1)
Dim a2 : a2 = "neuter"
If 3 <= WScript.Arguments.Count Then a2 = WScript.Arguments(2)
Test a0, a1, a2
Sub Test(name, age, sex)
WScript.Echo """" & Join(Array(name, age, sex), """, """) & """"
End Sub
它查看通过命令行在顶层/'main'/立即执行/退出VBScript代码的Sub / Function部分传递的参数。
为了避免引用/ args包含空格的问题,我会使用这个.exec调用:
String[] parms = {"wscript", "openURL.vbs", "Anna B. Carlson", "12", "fale"};
Runtime.getRuntime().exec(parms);