public static boolean spawnExe (String batch_file, boolean waitOnClose)
    {
        boolean retval = false;
        try {
            String osName = System.getProperty("os.name");
            String[] cmd = new String[3];            // Win9X
            if (osName.equals(WIN_95) ||
                osName.equals(WIN_98) ||
                osName.startsWith(WIN_3X) ||
                osName.startsWith(WIN_FW) ) {
                cmd[0] = "command.com" ;
                cmd[1] = "/C" ;
                cmd[2] = batch_file;
                retval = true;
            }
            // W2K or greater
            else if ( osName.startsWith(WIN) ) {
                cmd[0] = "cmd.exe" ;
                cmd[1] = "/C" ;
                cmd[2] = batch_file;
                retval = true;
            }            if (retval) {
                Runtime rt = Runtime.getRuntime();
                Process proc = rt.exec(cmd);                if (waitOnClose)
                  proc.waitFor();
            }
        } catch (Exception e) {
            e.printStackTrace();
            retval = false;
        }
        return retval;
    }

解决方案 »

  1.   

    纯Java是做不到的。
    需要调用本地代码,也就是要使用JNI
      

  2.   

    我试了, 可以啊!
    加上这一段: 可以看执行的结果输出。InputStream in = proc.getInputStream();
                    
    BufferedReader line = new BufferedReader(new InputStreamReader(in));
    String l = line.readLine();
        while (l!=null)
              {
              System.out.println(l);
              l = line.readLine();
             }
            
                    in.close();
      

  3.   

    <%
          //String ip = "192.1.1.23";    // 改為你想看网卡物理地址的IP
          String ip = request.getRemoteAddr();
          Process pp= Runtime.getRuntime().exec ("nbtstat -A " + ip ); //nbtstat是你要執行的DOS命令,也可以帶參數
          InputStreamReader ir = new InputStreamReader(pp.getInputStream());
          LineNumberReader input = new LineNumberReader (ir);
          String line="",ab="";
          int y,z;      for (y=1 ; y<100; y++)
          { 
           ab = input.readLine();
          if(ab!=null){
          if(ab.indexOf("MAC Address") >-1){
            line = line + ab + "<br>"; //這是執行命令的返回字符
          }
          }
          }
          String GetAdd = ip + "(" + request.getRemoteHost() + ")" + line  ;
          out.print(GetAdd);
          //out.print(ip + "(" + request.getRemoteHost() + ")的网卡物理地址" + line + "<br>");
    %>