我想用 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/