因此,当我手动将其放入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");
答案 0 :(得分: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();
另见:
答案 1 :(得分: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的完整路径作为新参数,然后库将负责转义。
答案 2 :(得分: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;