Java:执行/ cmd / c启动path-with-spaces \ program.exe

时间:2011-08-30 19:03:40

标签: java process

我已经阅读了很多关于这个问题的内容,但我找到的答案并没有完全发挥作用。

我尝试运行此代码:

String[] args = {"cmd","/c","start","C:\\Program Files\\XML Marker\\xmlmarker.exe"};
Runtime rt = Runtime.getRuntime();
ProcessBuilder pb = new ProcessBuilder(args);
Process pr = pb.start();      
//Process pr = rt.exec(args);

由于我的路径中有空格,我使用String数组将参数传递给Process 但是......它打开了一个DOS命令窗口但是没有启动我的程序,就像忽略的参数一样

我尝试使用rt.exec(args)和pb.start()......结果相同

有人可以给我一些建议吗? 谢谢。

2 个答案:

答案 0 :(得分:5)

尝试在字符串中添加引号,方法是在字符串中插入转义引号,如下所示:

String[] args = {"cmd","/c","start","\"C:\\Program Files\\XML Marker\\xmlmarker.exe\""};

注意路径字符串开头和结尾的\"

答案 1 :(得分:4)

无需同时拥有“开始”和“cmd”。你可以安全地取出“开始”。如果使用带有“start”命令的引号括起来的参数,则会将其视为新命令窗口的标题。