0

因此,当我手动将其放入 cmd 时,以下内容会打开一个新的浏览器窗口:

cd C:/Program Files (x86)/Google/Chrome/Application&chrome.exe

但是,当我尝试通过 java 程序执行此操作时(见下文),命令提示符打开并转到正确的目录,但没有打开新窗口。关于我需要改变什么的任何想法?

    Runtime rt = Runtime.getRuntime();
    rt.exec("cmd.exe /c start cd C:/Program Files (x86)/Google/Chrome/Application&chrome.exe");
4

3 回答 3

2

尝试ProcessBuilder代替Runtime

String command = "C:/Program Files (x86)/Google/Chrome/Application&chrome.exe";
ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/c", command);
Process p = pb.start();

也可以看看:

于 2013-07-30T20:14:44.677 回答
1

rt.exec("cmd.exe /c start cd \"C:/Program Files (x86)/Google/Chrome/Application&chrome.exe\"");

未经测试,但这应该可行,我只是将完整路径放在双引号中,以便由于空格,它不被视为下一个参数。

如果这不起作用,我建议尝试Apache Commons Exec库,因为我总是使用它。

这是我的一个应用程序中的一些示例代码:

CommandLine cmdLine = new CommandLine("cmd.exe");
                    cmdLine.addArgument("/c");
                    cmdLine.addArgument(".\\phantomjs\\nk\\batchbin\\casperjs.bat");
                    cmdLine.addArgument(".\\phantomjs\\nk\\batchbin\\dd.js");
                    cmdLine.addArgument(url);
                    cmdLine.addArgument(">" + rand);
                    DefaultExecutor executor = new DefaultExecutor();
                    int exitValue = executor.execute(cmdLine);

使用类似上面的完整路径到 chrome.exe 应该添加为新参数,然后库将负责转义。

于 2013-07-31T18:55:27.430 回答
0

我使用以下方法运行 chrome 进程:

            ProcessBuilder builder = new ProcessBuilder();            
            builder.command("C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe", "https://your url");            
            Process process = builder.start();
            int exitCode = process.waitFor();        
            assert exitCode == 0;      
于 2019-10-16T06:35:28.000 回答