Java Синтаксис ProcessBuilder для начального построения с помощью команды - PullRequest
0 голосов
/ 26 мая 2020
• 1000 .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());

}

1 Ответ

0 голосов
/ 26 мая 2020

Отдельный аргумент команды должен работать.

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();
        }
    }
}
...