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

我收到一个错误“类型不匹配’返回’”.这到底是哪里来的,什么是正确的解决方案?

解决方法:

您的错误很可能来自尝试将“返回”设置为一个值. 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,如我在上面所展示的那样,在尝试单独访问参数之前.

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

上一篇:从javascript / php在服务器上运行VBScript


下一篇:c#-使用Excel作为日志读取器.如果Excel打开,如何写日志文件?