Java ProcessBuilder命令的初始构造语法

问题描述 投票:0回答:1

我试图运行一个在构建过程中给ProcesBuilder作为参数的命令。

命令如下。

wmic process where name='OUTLOOK.EXE' get CommandLine

通常我只是用pb.command()来运行它,但是我需要 "捕捉 "输出,我已经通过一个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());

}
java syntax processbuilder
1个回答
0
投票

分开命令参数应该可以。

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();
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.