java - 如何从 Java 运行 Windows 命令

标签 java cmd mysql

我想用 Java 执行以下命令:

"C:\Program Files\MySQL\MySQL Server 5.5\bin\"mysqldump -u root --password=xxxx --routines database > C:\Users\john\Desktop\backup.sql

当我使用 Windows cmd.exe 而不是我的 Java 应用程序时,该命令完美运行。

cmd = "\"C:\\Program Files\\MySQL\\MySQL Server 5.5\\bin\\\"mysqldump
-u root --password=xxxx --routines database > C:\\Users\\john\\Desktop\\backup.sql
Runtime runtime = Runtime.getRuntime(); 
process = runtime.exec(cmd);

我收到以下错误:

"C:\Program Files\MySQL\MySQL Server 5.5\bin\"mysqldump -u root --password=xxxx --routines database > C:\Users\john\Desktop\backup.sql java.io.IOException: Cannot run program ""C:\Program": CreateProcess error=5, Access is denied

你有什么想法吗?

谢谢。

最佳答案

您正在尝试使用重定向 (>),这是 shell 的一个功能。

你没有 shell,你正在 exec 直接执行 mysqldump 进程。

您要么需要从process 对象中读取输出流并将其写入文件,要么exec windows shell 来执行mysqldump 为您提供重定向。

关于java - 如何从 Java 运行 Windows 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8403831/

相关文章:

mysql - 在 phpmyadmin 中创建外键

php - 如何优化我的 xml 输出以缩短数据传输时间?

mysql - 将文本文件导入 MySQL WorkBench。语法错误

java - JEE7 : best way to create another thread that never exits

java - 使用带有 tomcat 版本 9.0.31 的 spring boot 的分段文件上传失败

java - Hibernate 使用注释将多表映射到一张表

java - 将 Ctrl+C 发送到在 java 中启动的进程

windows - 在 64 位 Windows 7 中替换 Vern Buerg 的 list.com

php - Exec() w/-rwxr-xr-x 的权限被拒绝

java - Hibernate 数据获取类型问题