使用正确的转义路径执行命令

时间:2012-11-29 11:39:02

标签: java launching-application

请参阅this superuser问题。我需要运行命令

explorer.exe /select,"C:\Program Files\foobar"

来自Java。以下Java代码不像上面的命令行调用那样工作(Explorer选择一个完全不同的目录):

Runtime.getRuntime().exec(new String[] {
    "explorer.exe",
    "/select,\"C:\\Program Files\\foobar\""
});

我从纯Java方面获得了哪些其他选项(没有本机代码)?

2 个答案:

答案 0 :(得分:5)

您可以将/select放在单独的String令牌中,以阻止将其视为路径的一部分:

Runtime.getRuntime().exec(new String[] {
        "explorer.exe",
        "/select,", 
        "\"C:\\Program Files\\foobar\""
        });

答案 1 :(得分:0)

尝试ProcessBuilder。该API允许您在不引用的情况下传入参数。 见http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/ProcessBuilder.html#command(java.util.List