ProcessBuilder和带空格的命令

3
我最近将Java版本更新为JDK7u21。在更新21的发布说明中,明确提到了使用Runtime.exec存在问题。
因此,我想更改我的代码以使用ProcessBuilder。我正在尝试执行一个带有空格的命令。但是即使使用ProcessBuilder,我也会陷入C:\Users\Parag.Joshi\Documents而不是精确的目录。
以下是我的代码:
ProcessBuilder p = new ProcessBuilder("cmd", "/c", "explorer ", "C:\Local Disk D\My Tutorial");
p.start();

我查看了Java执行具有空格路径名的命令,但是没有头绪。


不要将引号放在“不起作用”的周围。 - ParagJ
1个回答

5
我刚在我的本地机器上测试了它。
这种行为是因为在 "explorer " 后面有空格引起的。去掉那个空格,它就能工作了。此外,你需要引用反斜杠。
ProcessBuilder p = new ProcessBuilder("cmd", "/c", "explorer", 
                                      "C:\\Local Disk D\\My Tutorial");

太好了!是的,我忘记转义 \。虽然我在代码中已经转义了它。但这是浏览器后面的空格问题。谢谢。 - ParagJ
不客气!当然你需要转义 \\,否则代码将无法执行并显示您的主目录,我只是为了完整性而添加它;-) - A4L

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接