/** * JavaExec.java version 1.0 Feb 22, 2010 */ import java.lang.Runtime; import java.lang.Process; import java.io.InputStreamReader; import java.lang.Exception; import java.io.*; public class JavaExec { /** * @param args * @author Eric Yang * @ */ public static void main(String[] args) { // TODO Auto-generated method stub JavaExec javaExec = new JavaExec(); javaExec.testProcess(); } public void testProcess() { try { String home="c:/process"; String command = "bfimport.bat -U yq -P qq -x bfimport_71.xml -p"; String[] cmd = new String[] { "cmd.exe", " ", "bfimport.bat" }; File dir = new File(home); //Process process = Runtime.getRuntime().exec(command,null, dir); Process process = Runtime.getRuntime().exec(command); /*TestInputStream errorStream = new TestInputStream(process .getErrorStream()); errorStream.start();*/ InputStream inputStream = process.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String line = null; while ((line = reader.readLine()) != null) { System.out.println(line); } //int exitValue = process.waitFor(); //System.out.println("Return Value:" + exitValue); process.getOutputStream().close(); } catch(IOException e) { System.out.println("IOException "); 修改其中的command就可以了 上面的例子确实可以获得一些输出,但是有很多情况也无法获取,再参考很多实例之后,下面的例子最强大,几乎可以捕获所有类型的命令行输出。 /** * JavaExec.java version 1.0 Feb 22, 2010 */ import java.lang.Runtime; import java.lang.Process; import java.io.InputStreamReader; import java.lang.Exception; import java.io.*; class StreamDrainer implements Runnable { private InputStream ins; public StreamDrainer(InputStream ins) { this.ins = ins; } public void run() { try { BufferedReader reader = new BufferedReader( new InputStreamReader(ins)); String line = null; while ((line = reader.readLine()) != null) { System.out.println(line); } } catch (Exception e) { e.printStackTrace(); } } } public class JavaExec { /** * @param args * * * @author Eric Yang * @ */ public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("/n Usage:java JavaExec command or java JavaExec"); JavaExec javaExec = new JavaExec(); if (args.length >= 1) { javaExec.testProcess(args[0]); } else{ javaExec.testProcess(null); } } public void testProcess(String userInputCmd) { try { String home="C:/jas_utilities"; String command = "bfimport.bat -U root -P root -x C:/etc/bfimport_71.xml -p"; String[] cmd = new String[] { "bfimport.bat", "-U ","root ", "-P"," root ", "-x ", "C:/fvt/7120modify/src/bfimport_71.xml", " -p" }; File dir = new File(home); //Process process = Runtime.getRuntime().exec(command,null, dir); Process process = null; if(userInputCmd == null){ process = Runtime.getRuntime().exec(command,null, dir); System.out.println("default command"); } else{ process = Runtime.getRuntime().exec(userInputCmd); System.out.println("user input command"); } System.out.println("-----------------output informaiton------"); new Thread(new StreamDrainer(process.getInputStream())).start(); System.out.println("-----------------output informaiton------/n"); System.out.println("-----------------error informaiton------"); new Thread(new StreamDrainer(process.getErrorStream())).start(); System.out.println("-----------------error informaiton------"); process.getOutputStream().close(); int exitValue = process.waitFor(); System.out.println("Return Value:" + exitValue); process.destroy(); } catch(Exception e) { System.out.println("Exception:"+e.getMessage() ); } } }