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何时完成,是否出现异常,输入输出流也得不到,
请问各位大虾,类似的问题如何解决?
11 个解决方案
#1
补充一下,判断exitValue,在db2cmd这句执行后就为0,所以判断exitValue没有作用
#2
在BAT里判断,如果成功返回0,
#3
set RETCODE=0
执行命令1
set RETCODE=%errorlevel%
if not %RETCODE% == 0 goto END
执行命令2
set RETCODE=%errorlevel%
if not %RETCODE% == 0 goto END
执行命令3
set RETCODE=%errorlevel%
if not %RETCODE% == 0 goto END
:END
exit %RETCODE%
执行命令1
set RETCODE=%errorlevel%
if not %RETCODE% == 0 goto END
执行命令2
set RETCODE=%errorlevel%
if not %RETCODE% == 0 goto END
执行命令3
set RETCODE=%errorlevel%
if not %RETCODE% == 0 goto END
:END
exit %RETCODE%
#4
还是执行一下batch文件吧 把要用的东东都写在batch里面 然后一起运行
#5
学习.
#6
应该还要waitFor()
#7
既然执行一条可以..
那就多 exec() 几次么..虽然麻烦点.
那就多 exec() 几次么..虽然麻烦点.
#8
不懂 学习哈
#9
up
#10
在卡住几天后,刚才突然找到了解决方法,贴上代码如下,给和我一样遇到同样问题的朋友:
/** */ /**
* 执行批处理
* @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 );
}
/** */ /**
* 执行批处理
* @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 );
}
#11
原文地址:http://www.blogjava.net/sojust/archive/2007/01/18/94253.html
感谢pauliuyou 的热心回复,结贴,给分呵呵
感谢pauliuyou 的热心回复,结贴,给分呵呵
#1
补充一下,判断exitValue,在db2cmd这句执行后就为0,所以判断exitValue没有作用
#2
在BAT里判断,如果成功返回0,
#3
set RETCODE=0
执行命令1
set RETCODE=%errorlevel%
if not %RETCODE% == 0 goto END
执行命令2
set RETCODE=%errorlevel%
if not %RETCODE% == 0 goto END
执行命令3
set RETCODE=%errorlevel%
if not %RETCODE% == 0 goto END
:END
exit %RETCODE%
执行命令1
set RETCODE=%errorlevel%
if not %RETCODE% == 0 goto END
执行命令2
set RETCODE=%errorlevel%
if not %RETCODE% == 0 goto END
执行命令3
set RETCODE=%errorlevel%
if not %RETCODE% == 0 goto END
:END
exit %RETCODE%
#4
还是执行一下batch文件吧 把要用的东东都写在batch里面 然后一起运行
#5
学习.
#6
应该还要waitFor()
#7
既然执行一条可以..
那就多 exec() 几次么..虽然麻烦点.
那就多 exec() 几次么..虽然麻烦点.
#8
不懂 学习哈
#9
up
#10
在卡住几天后,刚才突然找到了解决方法,贴上代码如下,给和我一样遇到同样问题的朋友:
/** */ /**
* 执行批处理
* @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 );
}
/** */ /**
* 执行批处理
* @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 );
}
#11
原文地址:http://www.blogjava.net/sojust/archive/2007/01/18/94253.html
感谢pauliuyou 的热心回复,结贴,给分呵呵
感谢pauliuyou 的热心回复,结贴,给分呵呵