Java 在进程中执行某事
Java Execute something in Process
我有以下代码:
builder = new ProcessBuilder("cmd");
builder.inheritIO();
p = builder.start();
p.waitFor();
在创建的命令行中,我想写例如"dir"。这怎么可能?
此致
编辑:
我必须 运行 多个命令,但我不能为此使用多个命令。
CMD.exe
在 Windows 命令站点上说(部分),
Options
/C Run Command and then terminate
所以,你应该可以使用
cmd /C dir
但使用 File.list()
.
的纯 Java 解决方案可能是更好的主意
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec(command);
你不能只用这样的东西吗:
ProcessBuilder builder = new ProcessBuilder("cmd");
Process p = builder.start();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(p.getOutputStream));
for(int i=0;i<7;i++) {
writer.write("dir");
writer.newLine();
writer.flush();
}
// Now terminate
writer.write("exit");
writer.newLine();
writer.flush();
p.waitFor();
要读取输出,请使用 p.getOutputStream()
(如果需要,还可以使用 p.getErrorStream()
——也可以考虑 ProcessBuilder.redirectErrorStream()
)。
我有以下代码:
builder = new ProcessBuilder("cmd");
builder.inheritIO();
p = builder.start();
p.waitFor();
在创建的命令行中,我想写例如"dir"。这怎么可能?
此致
编辑: 我必须 运行 多个命令,但我不能为此使用多个命令。
CMD.exe
在 Windows 命令站点上说(部分),
Options
/C Run Command and then terminate
所以,你应该可以使用
cmd /C dir
但使用 File.list()
.
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec(command);
你不能只用这样的东西吗:
ProcessBuilder builder = new ProcessBuilder("cmd");
Process p = builder.start();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(p.getOutputStream));
for(int i=0;i<7;i++) {
writer.write("dir");
writer.newLine();
writer.flush();
}
// Now terminate
writer.write("exit");
writer.newLine();
writer.flush();
p.waitFor();
要读取输出,请使用 p.getOutputStream()
(如果需要,还可以使用 p.getErrorStream()
——也可以考虑 ProcessBuilder.redirectErrorStream()
)。