如何从Java运行Windows命令

如何从Java运行Windows命令,java,mysql,cmd,mysqldump,Java,Mysql,Cmd,Mysqldump,我想用Java执行以下命令: “C:\Program Files\MySQL\MySQL Server 5.5\bin\”mysqldump-u root --password=xxxx--例程数据库>C:\Users\john\Desktop\backup.sql 当我使用Windows cmd.exe时,该命令可以很好地工作,但我的Java应用程序不能使用该命令 cmd = "\"C:\\Program Files\\MySQL\\MySQL Server 5.5\\bin\\\"mysql

我想用Java执行以下命令:

“C:\Program Files\MySQL\MySQL Server 5.5\bin\”mysqldump-u root --password=xxxx--例程数据库>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--例程数据库>C:\Users\john\Desktop\backup.sql java.io.IOException:无法运行程序“C:\program”:CreateProcess 错误=5,访问被拒绝

你知道吗


谢谢。

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

您没有shell,而是直接执行
mysqldump
进程


您需要从
进程
对象读取输出流并自己将其写入文件,或者
exec
windows shell为您执行
mysqldump
,同时执行重定向。

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

您没有shell,而是直接执行
mysqldump
进程

您需要从
进程
对象读取输出流并自己将其写入文件,或者
exec
windows shell为您执行
mysqldump
,同时执行重定向。

错误5要么是1)无法访问文件/文件夹,要么是2)没有权限

看起来“Program File”目录名中的空格可能会导致问题。请检查其显示“无法运行程序”的位置。C:\Program“。这显然不是对您试图运行的命令的引用。我要做的是将MySQL添加到您的路径中,然后只调用mysqldump命令而不调用它的路径。如果您不想这样做,可以定义一个系统变量并用%MYSQL\u HOME%\mysqldump引用它

解析路径后,如果仍然不起作用,则需要查看该命令的权限。您需要确保进程具有执行该命令的权限。我认为这是在本地管理组或类似的东西

美元到甜甜圈是您的路径tho。

错误5要么是1)无法访问文件/文件夹,要么是2)没有权限

看起来“Program File”目录名中的空格可能会导致问题。检查显示“无法运行程序”的位置“C:\program”。这显然不是对您试图运行的命令的引用。我要做的是将MySQL添加到您的路径中,然后只调用mysqldump命令而不调用它的路径。如果您不想这样做,可以定义一个系统变量并用%MYSQL\u HOME%\mysqldump引用它

解析路径后,如果仍然不起作用,则需要查看该命令的权限。您需要确保进程具有执行该命令的权限。我认为这是在本地管理组或类似的东西


美元到甜甜圈是你的路径。

请显示你用来调用它的Java代码。我给了它。这是第二个街区。啊,我错了。我被奇怪的语法着色弄得心烦意乱。请展示你用来调用这个的Java代码。我给出了它。这是第二个街区。啊,我错了。我被奇怪的语法颜色弄得心烦意乱。对不起,我对你的答案有点困惑。你能提供更多的细节吗?对不起,我对你的回答有点困惑。你能提供更多的细节吗?非常感谢。我已经创建了新的环境变量。非常感谢。我已经创建了新的环境变量。