Java 使用命令进行初始构造的 ProcessBuilder 语法
Java ProcessBuilder Syntax for Initial construction with Command
我正在尝试 运行 一个命令,我在构建时将其作为参数提供给 ProcesBuilder。
命令如下:
wmic process where name='OUTLOOK.EXE' get CommandLine
我通常只是 运行 它与 pb.command() 但我需要 "catch" 我已经通过 BufferedReader 完成的输出。
所以我的问题是,如果我想做类似的事情,我该如何正确地使用语法:
ProcessBuilder pb = new ProcessBuilder("wmic process where name='OUTLOOK.EXE' get CommandLine");
我知道我必须以某种方式将其拆分,但我不知道如何拆分。
完整方法如下:
public static void sendmail() throws IOException {
ProcessBuilder pb = new ProcessBuilder("wmic process where name='OUTLOOK.EXE' get CommandLine");
final Process p=pb.start();
BufferedReader br=new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
StringBuilder sb = new StringBuilder();
while((line=br.readLine())!=null) sb.append(line);
System.out.println(sb.toString());
}
分隔命令参数应该有效。
import java.io.IOException;
public class WmicProcessRunner {
public static void main(String[] args) {
try {
ProcessBuilder processBuilder = new ProcessBuilder("wmic", "process", "where", "name='OUTLOOK.EXE'", "get",
"CommandLine");
processBuilder.inheritIO();
Process wmicProcess = processBuilder.start();
while (wmicProcess.isAlive()) {
Thread.sleep(1000);
}
wmicProcess.destroy();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
我正在尝试 运行 一个命令,我在构建时将其作为参数提供给 ProcesBuilder。
命令如下:
wmic process where name='OUTLOOK.EXE' get CommandLine
我通常只是 运行 它与 pb.command() 但我需要 "catch" 我已经通过 BufferedReader 完成的输出。
所以我的问题是,如果我想做类似的事情,我该如何正确地使用语法:
ProcessBuilder pb = new ProcessBuilder("wmic process where name='OUTLOOK.EXE' get CommandLine");
我知道我必须以某种方式将其拆分,但我不知道如何拆分。
完整方法如下:
public static void sendmail() throws IOException {
ProcessBuilder pb = new ProcessBuilder("wmic process where name='OUTLOOK.EXE' get CommandLine");
final Process p=pb.start();
BufferedReader br=new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
StringBuilder sb = new StringBuilder();
while((line=br.readLine())!=null) sb.append(line);
System.out.println(sb.toString());
}
分隔命令参数应该有效。
import java.io.IOException;
public class WmicProcessRunner {
public static void main(String[] args) {
try {
ProcessBuilder processBuilder = new ProcessBuilder("wmic", "process", "where", "name='OUTLOOK.EXE'", "get",
"CommandLine");
processBuilder.inheritIO();
Process wmicProcess = processBuilder.start();
while (wmicProcess.isAlive()) {
Thread.sleep(1000);
}
wmicProcess.destroy();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}