как взаимодействовать (предоставлять входные данные и читать выходные данные) с командой, вызываемой командным файлом с использованием Java - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь запустить файл bat, который вызывает класс Java, я хочу продолжить взаимодействие с окном команд, предоставляя входные данные и читая выходные данные из окна команд, используя Java. Но я могу читать только первую строку командной строки и не знаю, как с ней взаимодействовать дальше. при выполнении командного файла он запрашивает у нас имя файла, после ввода имени файла запрашивает другие сведения

Попытка с использованием компоновщика процессов и утилиты plexus, я не могу понять, как запустить вторую команду после выполнения первой.

ниже изображения, если я делаю вручную, сначала он запрашивает каталог файлов, enter image description here

Тогда мне подсказывают дату enter image description here

Попробовал с помощью кода ниже

public class plexus {

    public plexus() {
        String batfile = "regression-test-runner-steadfast.bat";
        String directory = "C:\\Dev\\temp\\IOS-automation-test\\Steadfast-UAT-Regression-Test-Runner-Client-dist";
        try {
            runProcess(batfile, directory);
        } catch (CommandLineException e) {
            e.printStackTrace();
        }
    }

    public void runProcess(String batfile, String directory) throws CommandLineException {

        Commandline commandLine = new Commandline();

        File executable = new File(directory + "/" +batfile);
        commandLine.setWorkingDirectory(directory);
        commandLine.setExecutable(executable.getAbsolutePath());
        commandLine.createArg().setValue("C:\\Users\\U399526\\Desktop\\SVU_XML\\Scenario 1");

        WriterStreamConsumer systemOut = new WriterStreamConsumer(
                new OutputStreamWriter(System.out));

        WriterStreamConsumer systemErr = new WriterStreamConsumer(
                new OutputStreamWriter(System.out));

        int returnCode = CommandLineUtils.executeCommandLine(commandLine, systemOut, systemErr);


        if (returnCode != 0) {
            System.out.println("Something Bad Happened!");
        } else {
            System.out.println("Taaa!! ddaaaaa!!");
        };
    }

    public static void main(String[] args) {
        new plexus();
    }
}
...