java 运行 xx.bat或xx.sh批处理文件
一、项目要求
客户需要一个可以将数据进行备份的功能,每次想要备份时,点一下就可以进行备份。
二、项目环境
项目的部署环境是Linux
注:windows也是一样,改一下文件的后缀和批处理文件的内容即可。
看过好些个博文,没有一个是符合我的要求的。于是我就动手写了一个
侵权即删!!
参考一:java 运行批处理文件_如何从Java应用程序运行批处理文件?_赵余的博客-CSDN博客在我的Java应用程序中,我想运行一个调用"scons -Q implicit-deps-changed build\file_load_type export\file_load_type"的批处理文件似乎我甚至无法执行我的批处理文件。 我没有想法。这就是我在Java中所拥有的:Runtime.getRuntime().exec("build.bat", null, new File("."))...https://blog.csdn.net/weixin_29596485/article/details/114609016
参考二:Java调用Shell命令和脚本 - 百度文库https://wenku.baidu.com/view/6efdf5002c60ddccda38376baf1ffc4ffe47e281.html
参考三:java调用shell脚本的方法-java基础-Python学习网java调用shell脚本的方法:1、通过ProcessBuilder进行调度,这种方法比较直观,而且参数的设置也比较方便。2、直接通过系统Runtime执行shell,特别是参数方面,必须自己加空格分开。
https://m.py.cn/java/jichu/30321.html
以上内容只作为参考,如有侵权请联系,本人立即删除。
三、解决方案
1.创建一个批处理文件,xxx.sh。写入下方脚本
rem ******MySQL backup start******@echo off::设置时间变量
if %time:~0,2% leq 9 (set hour=0%time:~1,1%) else (set hour=%time:~0,2%)
set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%%hour%%time:~3,2%"::进入mysql安装目录的bin目录下
:: cd "C:\Program Files\MySQL\MySQL Server 5.7\bin\"
::cd F:\backup\::执行备份操作
::mysqldump --opt --single-transaction=TRUE --user=root --password=root --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --single-transaction=TRUE --routines --events "db_pj_oa" > F:\backup\backup_%Ymd%.sql
"C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqldump" -uroot -proot db_pj_oa > F:\backup\db_pj_oa_%Ymd%.sql
@echo onrem ******MySQL backup end******
2.创建一个批处理类,拷贝下方方法
public String callScript(String script, String args, String... workspace) {String line = "";if(workspace[0] != null) {System.out.println(workspace[0]);try {ProcessBuilder processBuilder = new ProcessBuilder();Process process = processBuilder.command(workspace[0] + "/" + script).start();BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream()));while ((line = input.readLine()) != null) {line = "true";}input.close();} catch (IOException e) {e.printStackTrace();}}return line;}
script:是批处理文件的名称,如,bkdp_pj_oa.sh(我的)
args:这里我默认为“4”,想要知道为什么是“4”的朋友可以自行查阅资料
workspace:批处理文件的文件夹名称,如,/home/backup/(我的)
3.调用批处理文件
// 调用数据库备份批处理文件
DataBackups dbup = new DataBackups();
dbup.callScript("bkdp_pj_oa.sh", "4", "/home/backup/");
DataBackups:是我的批处理文件的类
如此,大功就告成了!
欢迎评论进行探讨!
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
