我有个需求按钮触发bat脚本备份mysql,但是怕备份太多找不到最终的,所以可以自定义脚本备份的mysql名称
直接上干货
首先展示java代码
public static void main(String[] args) {// 备份文件名作为参数传入String backupFileName = "C:\\Users\\Administrator\\Desktop\\12312312312\\text_backup123.sql";try {// 指定脚本的路径String scriptPath = "C:\\Users\\Administrator\\Desktop\\Debug\\mysql.bat";// 创建ProcessBuilder对象,并设置脚本路径和备份文件名作为参数ProcessBuilder processBuilder = new ProcessBuilder(scriptPath, backupFileName);// 启动进程Process process = processBuilder.start();// 读取进程的输出BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));String line;while ((line = reader.readLine()) != null) {System.out.println(line);}// 等待进程执行完毕int exitCode = process.waitFor();// 打印进程的退出码System.out.println("Script executed with exit code: " + exitCode);} catch (IOException | InterruptedException e) {e.printStackTrace();}}
【注意】
我的脚本路径在:C:\\Users\\Administrator\\Desktop\\Debug\\mysql.bat我的mysql备份路径在:
C:\\Users\\Administrator\\Desktop\\12312312312\\text_backup123.sql
接下来上bat脚本
@echo off
rem 检查是否传递了备份文件名作为参数
if "%~1"=="" (echo No backup file name provided.exit /b 1
)rem 设置备份文件名为传入的第一个参数
set backupFileName=%~1rem 执行数据库备份命令,使用传入的备份文件名
D:\mysql-8.0.35-winx64\bin\mysqldump --single-transaction -uroot -h 127.0.0.1 -p123456 -P 3306 test > "%backupFileName%"