欢迎使用CSDN-markdown编辑器

来源:互联网 发布:小学英语课本同步软件 编辑:程序博客网 时间:2024/06/08 04:58

/**
* commons-exec.jar
* 根据路径执行文件
* @param path
* @return
*/
public static String exec(String path){

     if(StringUtil.isEmpty(path)){         return null;     }     try {     //创建一个命令行     CommandLine cmdLine = CommandLine.parse(path);     //参数一     cmdLine.addArgument("pararm_1");     //参数二     cmdLine.addArgument("pararm_2");     //执行流     DefaultExecutor executor  = new DefaultExecutor();     //定义一组预期退出值     //executor.setExitValue(1);     executor.setExitValues(null);      //监管机构-监管进程执行时间 --单位为毫秒     ExecuteWatchdog watchdog = new ExecuteWatchdog(10);     executor.setWatchdog(watchdog);     ByteArrayOutputStream outputStream = new ByteArrayOutputStream();       ByteArrayOutputStream errorStream = new ByteArrayOutputStream();      PumpStreamHandler streamHandler = new PumpStreamHandler(outputStream,errorStream);       executor.setStreamHandler(streamHandler);       int ex = executor.execute(cmdLine);     //拿到执行程序中输出内容     String out = outputStream.toString("gbk");        //拿到执行程序中执行异常内容     String error = errorStream.toString("gbk");       Log.info(CommonsExecUtil.class, "Method[exec]执行命令行文件名称:{},执行输出:{},执行异常信息:{},执行结果:{}", path,out,error,ex);    } catch (IOException e) {        e.printStackTrace();    }     return null; } public static void main(String[] args) {     exec("D:/svn/1.bat");}

/****************java直接调用runtime****************************/
import java.io.IOException;
import java.io.InputStream;

public class InvokeBat2 {
public void runbat(String batName) {
try {
Process ps = Runtime.getRuntime().exec(batName);
InputStream in = ps.getInputStream();
int c;
while ((c = in.read()) != -1) {
System.out.print(c);// 如果你不需要看输出,这行可以注销掉
}
in.close();
ps.waitFor();

    } catch (IOException ioe) {        ioe.printStackTrace();    } catch (InterruptedException e) {        // TODO Auto-generated catch block        e.printStackTrace();    }    System.out.println("child thread done");}public static void main(String[] args) {    InvokeBat2 test1 = new InvokeBat2();    String batName = "F:\\database_backup\\ngx_backup\\backup_ngx.bat";    test1.runbat(batName);    System.out.println("main thread");}

}

0 0
原创粉丝点击