1. 请教关于JAVA在WIN下执行.BAT文件的问题 ->6楼的回答
2.请问如何在调用cmd运行完bat文件后自动退出 ->11楼的回答
3.java调用bat
在前面的博客中写道了mysql的数据库备份与恢复,这个主要是通过手动调用bat文件来执行的,那么如何在程序中调用bat文件呢。这就是这篇博客需要讲的主题。
import java.io.IOException; public class InvokeBat4 { public void runbat(String batName) { String cmd = "cmd /c start F:\\database_backup\\ngx_backup\\"+ batName + ".bat";// pass try { Process ps = Runtime.getRuntime().exec(cmd); ps.waitFor(); } catch (IOException ioe) { ioe.printStackTrace(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("child thread donn"); } public static void main(String[] args) { InvokeBat4 test1 = new InvokeBat4(); test1.runbat("backup_ngx"); System.out.println("main thread"); } }
会弹出cmd框,并且不能自动关闭
在bat文件最后加上
exit
比如原来的bat文件内容如下:
mysqldump -uroot -proot --database ngx_ad ngx_authority ngx_jbpm ngx_mes ngx_model > F:\database_backup\ngx_backup\ngx_db.sql
我们将其修改为
mysqldump -uroot -proot --database ngx_ad ngx_authority ngx_jbpm ngx_mes ngx_model > F:\database_backup\ngx_backup\ngx_db.sql exit
即使能够自动退出,但是每次调用这个bat的时候屏幕总是会闪一下cmd命令框。
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"); } }
下一篇文章:Extjs+JSON实例http://www.cnblogs.com/xwdreamer/archive/2011/12/11/2296912.html
下一篇文章:算法面试题总结http://www.cnblogs.com/xwdreamer/archive/2011/12/13/2296910.html