在vbScript中获取类型不匹配错误

时间:2014-11-06 05:23:44

标签: java vbscript

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());

我收到错误"Type mismatch 'return'"。究竟是从哪里来的,什么是正确的解决方案?

1 个答案:

答案 0 :(得分:3)

您的错误可能来自于尝试设置&#34;返回&#34;一个价值。 VBScript不支持&#34; return&#34;。如果你想从函数中返回一个值,你可以这样构造它:

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中,你的&#34;返回值&#34;通过将值赋值给函数名称来设置,如上所述。

当然,你需要小心,因为如果没有传入参数2,那么你最终会得到一个数组下标错误,所以总是使用args.Count,正如我上面演示的那样,在你试图访问之前单独的参数。

如果您有更具体的问题或错误,或解释您在做什么,我们可能会为您提供更好的答案......