我使用
Runtime rt=Runtime.getRuntime();
Process prc=rt.exec("db2cmd db2 connect to ioa5 db2 get db cfg");
如此使用报错:未知的标志符db2,在执行完db2 connect to ioa5命令后,就失败了,用new String[]{"","",""}的方式执行是同样的问题
无奈,将
db2 connect to ioa5 
db2 get db cfg
做成一个bat文件db.bat,调用rt.exec("db2cmd c:\\db.bat");
执行成功。但是Process得不到了,无法获知Process何时完成,是否出现异常,输入输出流也得不到,
请问各位大虾,类似的问题如何解决?

解决方案 »

  1.   

    补充一下,判断exitValue,在db2cmd这句执行后就为0,所以判断exitValue没有作用
      

  2.   

    在BAT里判断,如果成功返回0, 
      

  3.   

    set RETCODE=0执行命令1set RETCODE=%errorlevel%if not %RETCODE% == 0 goto END
    执行命令2set RETCODE=%errorlevel%if not %RETCODE% == 0 goto END
    执行命令3set RETCODE=%errorlevel%if not %RETCODE% == 0 goto END
    :END
    exit %RETCODE%
      

  4.   

    还是执行一下batch文件吧  把要用的东东都写在batch里面 然后一起运行
      

  5.   

    既然执行一条可以..   那就多 exec() 几次么..虽然麻烦点.
      

  6.   

    在卡住几天后,刚才突然找到了解决方法,贴上代码如下,给和我一样遇到同样问题的朋友:      /** */ /** 
         * 执行批处理
         *  @param  command
         */ 
          public   void  runBat(String command)  {
                Process child  =   null ;
                 try    {
                          Runtime rt =  Runtime.getRuntime();
                         child = rt.exec(command);
                            //以下代码为控制台输出相关的批出理
                          String line  =   null ;
                          BufferedReader reader  =   new  BufferedReader( new  InputStreamReader(child.getInputStream()));
                           while ((line  =  reader.readLine())  !=   null )
                            {
                              System.out.println(line);
                          } 
                          reader.close();
                          // 等待刚刚执行的命令的结束  
                         while  ( true )  { 
                             if (child.waitFor()  ==   0 )  break ;
                        }       
                } 
                  catch  (Exception ex)  {
                       child.destroy();
                    ex.printStackTrace();
                } 
            }   public   void  exportBat(String zipPath)  {
              // 执行批处是导出到目录下 
                this .runBat( " db2cmd -c -w -i exportdb.bat " );
              // 压缩文件生成打包 
                 this.doZip(zipPath ,zipPath +" \\test .rar" ); 
                // 上传 
               this .ftpUp("目录");
              // 删除客户端目录生成的文件 
               this .delFile(zipPath );
        } 
      

  7.   

    原文地址:http://www.blogjava.net/sojust/archive/2007/01/18/94253.html
    感谢pauliuyou 的热心回复,结贴,给分呵呵