1

我从 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 中存在的上述方法

4

3 回答 3

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 作为第一次出现开始

现在在调用这个 VBS 文件的 Java 代码中,我们将具有以下内容:

Runtime.getRuntime().exec("wscript C:\\MyVBScript.vbs " + name + " " + age + " " + sex

感谢 AlexR 的原始答案,但我觉得它需要一点澄清。我希望这对人们有所帮助。我个人在我的 Java 测试工具中使用它作为启动 Quick Test Professional 的方法。

于 2013-05-10T12:55:08.353 回答
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);
于 2013-02-05T17:08:00.580 回答
0

你的问题主要不是关于java,而是关于VBS。查看描述如何在 VBS 中读取命令行参数的讨论。通常你必须使用内置对象Wscript.Arguments。解析脚本“主要”部分中的参数并调用您的 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);
于 2013-02-05T16:19:25.763 回答