标题: [求助]关于JAVA调用BAT的问题
[打印本页]
作者: dhn269
时间: 2008-10-14 16:55
标题: [求助]关于JAVA调用BAT的问题
1.我在java中调用BAT时,发现java只是调起BAT,并不等待BAT执行完,Process中的waitFor()方法也不管用,往往是进程已经结束了,但Java还认为没结束,或者干脆是Java认为结束了,但进程却实际还在运行着。请问有什么办法解决呢?
2.java能获取BAT退出时返回的errorlevel值吗?
查了一下午了 实在找不到
谢谢
作者: huahua0919
时间: 2008-10-14 17:33
把你用JAVA调用BAT的程序贴出来看看
作者: dhn269
时间: 2008-10-14 18:32
用下面这个倒是可以解决调用不等待的问题了,但是“2.java能获取BAT退出时返回的errorlevel值吗?”还是没什么头绪
import java.io.IOException;
import java.io.InputStream;
public class CallCmd {
/**
* 调用.bat的脚本,等待脚本执行完毕后在执行后面的工作.
* @param locationCmd bat脚本的位置C:\\2006121911111AP\\2006121911111.bat
*/
public static void callCmd(String locationCmd){
try {
Process child = Runtime.getRuntime().exec("cmd.exe /C start "+locationCmd);
InputStream in = child.getInputStream();
int c;
while ((c = in.read()) != -1) {
}
in.close();
try {
child.waitFor();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("done");
} catch (IOException e) {
e.printStackTrace();
}
}
}
作者: huahua0919
时间: 2008-10-14 19:08
上面的程序中用
while ((c = in.read()) != -1)
来判断程序是否结束,其实也可以创建一个线程,并分配一把锁给这个线程,当程序结束后再归还给main,基本可以实现效果
至于你说的errorlevel返回值,在JAVA中我没听说过,也许是我寡闻,一般的方法返回类型都会在你方法名前定义好的,即使异常的也是通过Try进行捕获!
不知你有何高见
作者: junchen2
时间: 2008-10-14 19:58
start去掉试一试,
PS,代码都没用帖全try catch语句貌似都有错误。本人java知道一点皮毛哈。
作者: dhn269
时间: 2008-10-14 22:07
Quote: |
Originally posted by huahua0919 at 2008-10-14 19:08:
上面的程序中用
while ((c = in.read()) != -1)
来判断程序是否结束,其实也可以创建一个线程,并分配一把锁给这个线程,当程序结束后再归还给main,基本 ... |
|
1.谢谢你的解释,这个程序没什么问题,确实实现那个效果了
2.我说的得到ERRORLEVEL是这个意思:
@echo off
set AAA=234
exit /B %AAA%
这个批处理程序完成以后,会返回234,我用JAVA调用这个批处理后想得到这个234,不知道该怎么写