我使用
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何时完成,是否出现异常,输入输出流也得不到,
请问各位大虾,类似的问题如何解决?
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何时完成,是否出现异常,输入输出流也得不到,
请问各位大虾,类似的问题如何解决?
执行命令2set RETCODE=%errorlevel%if not %RETCODE% == 0 goto END
执行命令3set RETCODE=%errorlevel%if not %RETCODE% == 0 goto END
:END
exit %RETCODE%
* 执行批处理
* @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 );
}
感谢pauliuyou 的热心回复,结贴,给分呵呵