本文内容大多基于官方文档和网上前辈经验总结,经过个人实践加以整理积累,仅供参考。
1 准备一个测试用批处理文件:test.bat
mysqldump -uroot -p123456 test > d:/test.sql
2 调用批处理文件的 Java 代码
package test;
import java.io.IOException;
import org.junit.Test;
public class CmdTest {
@Test
public void testExecCmd() throws IOException, InterruptedException {
String cmd = "cmd /c start d:/test.bat";
Process process = Runtime.getRuntime().exec(cmd);
process.waitFor();
}
}
以上代码有一个缺点,运行过程中会弹出 CMD 窗口,且执行完后窗口无法自动关闭。
解决此问题有两个方法:
(1) 修改 BAT 文件,在最后新增一行代码 exit
mysqldump -uroot -p123456 test > d:/test.sql
exit
尽管执行完成后 CMD 窗口会自动关闭,但是执行期间 CMD 窗口还是会弹出
(2) 不修改 BAT 文件,修改 Java 代码,避免弹出 CMD 窗口
package test;
import java.io.IOException;
import org.junit.Test;
public class CmdTest {
@Test
public void testExecCmd() throws IOException, InterruptedException {
Process process = Runtime.getRuntime().exec("d:/test.bat");
process.waitFor();
}
}