如何使用java执行命令

如何使用java执行命令,java,Java,可能重复: 我有以下命令 i\u view32.exe C:\*.bmp/import\u pal=C:\default.pal/convert=D:\temp\*.bmp 当我运行命令提示符时,它可以正常工作。 我试图在java的帮助下运行相同的命令 Process p = Runtime.getRuntime().exec(System.getenv("ProgramFiles")+"\\IrfanView\\i_view32.exe c:\\*.bmp /import_pal= 1.

可能重复:

我有以下命令

i\u view32.exe C:\*.bmp/import\u pal=C:\default.pal/convert=D:\temp\*.bmp
当我运行命令提示符时,它可以正常工作。 我试图在java的帮助下运行相同的命令

 Process p = Runtime.getRuntime().exec(System.getenv("ProgramFiles")+"\\IrfanView\\i_view32.exe  c:\\*.bmp /import_pal= 1.pal /convert=d:\\temp\\*.bmp");
但我无法在
d:\\temp\\
文件夹中获得输出。谁能告诉我哪里错了

提前谢谢

当我使用斜杠
/import\u pal=
尝试执行CMD时,是否有其他方法给出
“/”

例如:

proc = Runtime.getRuntime().exec("cmd.exe /c dir");

它应该是这样工作的,比如你的例子,它有点复杂,但是试一下这样做。

2你的尝试并不完全相同。我认为您在
c:\Program Files\IrfanView
中时从命令提示符执行了命令。当您试图从java运行相同的命令时,您提到了完整的路径。由于某些程序对当前工作目录敏感,我建议您首先尝试从其他目录(例如从c:)运行该命令,但要指定完整路径

如果它可以手动运行,但不能从java运行,请尝试使用ProcessBuilder而不是
Runtime.exec()
。实际上它几乎相同,但它更面向对象,并且允许单独指定工作目录。我希望这对你有用

如果没有,尝试使用引号。目录路径“c:\Program Files”包含空间,因此应引用该路径


祝你好运

是否检查了
System.getenv(“ProgramFiles”)
是否实际返回了所需的内容?是否尝试过使用exec with String[]参数?如果你有额外的参数,我敢肯定使用Process.exec(String命令)是不起作用的。这个命令会给出一些输出吗。。您可以尝试使用p.getInputStream()和p.getErrorStream()读取进程的输出,我发现这一个对于通过java执行一些复杂命令非常有用。。尝试使用:ProcessBuilder=newprocessbuilder(字符串[]命令).start();它的Runtime.getRuntime().execYou是对的,只是输入了错误的字符:)