嘿,我正在尝试更改目录,然后使用参数运行我的命令。final String path = "\\Local// Apps\\IBM\\SDP\\scmtools\\eclipse";final String command = "scm help";final String dosCommand = "cmd /c \"" + path + "\"" + command;final Process process = Runtime.getRuntime().exec(dosCommand);final InputStream in = process.getInputStream();int ch;while((ch = in.read()) != -1) { System.out.print((char)ch);}它运行没有错误,但没有输出任何内容。但是,这是完成后显示的内容:<terminated, exit value: 0>C:\Local Apps\IBM\SDP\jdk\bin\javaw.exe (Jul 22, 2019, 11:21:37 AM)预期的输出应该是:那我这样做正确吗?正如安德烈亚斯所建议的Process p = null;ProcessBuilder pb = new ProcessBuilder("scm.exe");pb.directory(new File("C:/Local Apps/IBM/SDP/scmtools/eclipse"));p = pb.start();我收到以下错误:无法运行程序“scm.exe”(在目录“C:\Local Apps\IBM\SDP\scmtools\eclipse”中):CreateProcess error=2,系统找不到指定的文件
1 回答
繁星淼淼
TA贡献1775条经验 获得超11个赞
你应该使用ProcessBuilder
instead of Runtime.exec
,例如
Process proc = new ProcessBuilder("scm.exe", "help") .directory(new File("C:\\Local Apps\\IBM\\SDP\\scmtools\\eclipse")) .inheritIO() .start(); proc.waitFor(); // optional
如果需要,您还可以通过命令解释器,例如,如果命令是脚本(.bat 或 .cmd 文件):
Process proc = new ProcessBuilder("cmd", "/c", "scm", "help") .directory(new File("C:\\Local Apps\\IBM\\SDP\\scmtools\\eclipse")) .inheritIO() .start(); proc.waitFor();
这inheritIO()
意味着您不需要处理命令输出。它将被发送到控制台,或者 Java 自己的输出所在的任何地方。
添加回答
举报
0/150
提交
取消