如何使用 Java 中的参数运行 VBS 函数并将结果分配给变量
Posted
技术标签:
【中文标题】如何使用 Java 中的参数运行 VBS 函数并将结果分配给变量【英文标题】:How to run VBS function with parameters from Java and assign result to variable 【发布时间】:2017-07-02 20:24:56 【问题描述】:我有这个 excel 宏:
Function Calculate_Something(StartDate As Date, EndDate As Date) As Double
//some math is here, not important
Calculate_Something = Result
End Function
我想将我的日期传递给这个宏,在我的 Java 程序中执行它,最后得到返回值并将它分配给我在 Java 中的值。
我已经用这个函数创建了 VBS 脚本,并尝试在 Java 中像这样执行它:
String[] parms = "wscript", "calc.vbs", "2017-02-06 09:38:36", "2017-02-06 12:47:41";
Runtime.getRuntime().exec(parms);
但它没有用。你知道我该怎么做吗?
【问题讨论】:
【参考方案1】:您将希望使用cscript.exe
而不是wscript.exe
,它们都是同一个主机,但一个是为 GUI 设计的,而另一个是为命令行设计的。
修改 VBScript 函数以将Result
输出到屏幕(执行的命令输出流),然后使用从调用Runtime.getRuntime().exec(parms);
派生的Process
对象检索它。
Process
对象有一个名为 getInputStream()
的方法,它应该允许您访问和读取脚本输出返回的值。
try
String[] parms = "cscript", "calc.vbs", "2017-02-06 09:38:36", "2017-02-06 12:47:41";
Process p = Runtime.getRuntime().exec(parms);
// Get Input Stream from the Process
BufferedReader is = new BufferedReader(new InputStreamReader(p.getInputStream()));
// Do something with stream, read etc.
String line;
while ((line = is.readLine()) != null)
System.out.println(line);
catch (Exception ex)
ex.printStackTrace();
有用的链接
vbscript output to console What is InputStream & Output Stream? Why do we use them and when do we use each of them? Understanding getInputStream and getOutputStream【讨论】:
以上是关于如何使用 Java 中的参数运行 VBS 函数并将结果分配给变量的主要内容,如果未能解决你的问题,请参考以下文章