Set args = WScript.Arguments
dim rec
rec = args.Item(1)&" "&args.Item(2)
return rec
我在上面编写了这个简单的vbScript,然后当我尝试从Java调用此代码时…
import java.io.*;
class RuntimeDemo{
public static void main(String[] args) {
Process p=null;
try {
p=Runtime.getRuntime().exec("wscript D:/AS/VBScripts/Sample1.vbs " + args[0] +" " + args[1] + " " + args[2]);
}
catch( IOException e ) {
System.out.println(e);
System.exit(0);
}
p.waitFor();
InputStream in = p.getInputStream();
for (int i = 0; i < in.available(); i++) {
System.out.println("" + in.read());
我收到一个错误“类型不匹配’返回’”.这到底是哪里来的,什么是正确的解决方案?
解决方法:
您的错误很可能来自尝试将“返回”设置为一个值. VBScript不支持“返回”.如果要从函数返回值,则可以这样构造它:
function GetParams()
dim wsh, args, rec
set wsh = CreateObject("WScript.Shell")
set args = wscript.arguments
if args.Count <= 0 then
GetParams = ""
exit function
end if
if args.Count >= 2 then
rec = args(1) & " " & args(2)
elseif args.count = 1
rec = args(1)
else
rec = ""
end if
GetParams = rec
end function
在VB和vbScript中,就像我上面所做的那样,通过将值分配给函数的名称来设置“返回值”.
当然,您需要小心,因为如果没有传入参数2,则最终将导致数组下标错误,因此请始终使用args.Count,如我在上面所展示的那样,在尝试单独访问参数之前.
如果您有更具体的问题,错误或解释您在做什么,我们可能会为您提供更好的答案…