java中调用db2cmd命令

使用Runtime调用bat文件处理外部角本时一般使用 Runtime.getRuntime.exec(command)就可以了
如果批处理是使用db2的db2cmd时,dos窗口则会弹出db2命令窗口执行相关的处理角本,如果需要等特此批处理命令执行完成后再执行下面的流程就会出现相应的问题,如下例流程,将客户端将生成数据备份文件上传至服务器



因waitFor() 只能控制第一个dos窗口的进程,而无法控制下一个窗口,程序则会同步执行,当数据还没生成时就已经进行压缩处理了,当然会出现错误。
所以在执行批处理时将批出理文件隐式执行

实施方法代码如下




     /**
     * 执行批处理
     * 
@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 );
    }
说明:
1、runBat中执行db2cmd时需加上-c -w -i script 
2、dozip,ftpUp,delFile方法省略...
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值