【发布时间】:2019-11-30 14:45:54
【问题描述】:
大家好,我正在尝试更改目录,然后使用参数运行我的命令。
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)
预期的输出应该是:
那么我这样做对吗?
按照 Andreas 的建议
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,系统找不到指定的文件
【问题讨论】:
-
不,你应该使用
ProcessBuilder而不是Runtime.exec,因为它支持设置工作目录,直接发送输出到控制台等。 -
@Andreas 我用你的建议更新了我的 OP... 似乎仍然不起作用。
-
什么是
scm?一个.exe文件?还是 .bat 或 .cmd 文件?还有什么? -
该目录中的一个 .exe 文件
标签: java process inputstream runtime.exec