import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.List;
public class Gcollect {
public static void main(String[] args) {
// TODO Auto-generated method stub
Gcollect test1 = new Gcollect ();
test1.runbat("2017-03-30T11:19","2017-03-31T11:19");
System.out.println("处理结束...");
Gcollect test2 = new Gcollect ();
test2.runbat("2017-04-01T11:19","2017-04-02T11:19");
System.out.println("处理结束...");
Gcollect test3 = new Gcollect ();
test3.runbat("2017-04-03T11:19","2017-04-04T11:19");
System.out.println("处理结束...");
}
public String createCmd(String from, String to) {
String cmd = "cmd /c start C:\\Users\\xxx\\Desktop\\dropdata\\execStatusStreamLogGC.bat"+" " + from + " " + to;
return cmd;
}
public void runbat(String from, String to) {
String cmd = "cmd /c start C:\\Users\\xxx\\Desktop\\dropdata\\execStatusStreamLogGC.bat"+" " + from + " " + to;
try {
Process ps = Runtime.getRuntime().exec(cmd);
System.out.println(ps.getInputStream());
InputStream in = ps.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String tmp = null;
while((tmp=br.readLine())!=null){
System.out.println(tmp);
}
} catch(IOException ioe) {
ioe.printStackTrace();
}
}
public static void printList(List<String> list){
for (String string : list) {
System.out.println(string);
}
}
}
前提:最近要写一个多次调用cmd命令调用外部jar的程序,传入不同时间段的参数,上面代码能够调用外部jar了,但是我需要判断是否是正常结束,如果出错要重新调用一遍。
现状:执行这段代码的时候,cmd成功调用了,但是ps.getInputStream()取不到cmd窗口打印出的执行信息,无法判断是否是正常结束。
问题:ps.getInputStream()是否可以获取cmd窗口打印出来的信息,如果可以,我的问题是什么呢,为什么我取不到cmd窗口显示的信息呢?请大神们指点。。多谢
下面是cmd窗口执行打印出的信息
这个是eclipse控制台出的信息:
java.io.BufferedInputStream@15db9742
处理结束...
java.io.BufferedInputStream@6d06d69c
处理结束...
java.io.BufferedInputStream@7852e922
处理结束...