我有个需求按钮触发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=%~1
rem 执行数据库备份命令,使用传入的备份文件名
D:\mysql-8.0.35-winx64\bin\mysqldump --single-transaction -uroot -h 127.0.0.1 -p123456 -P 3306 test > "%backupFileName%"