Java запускает CMD и несколько команд без компоновщика - PullRequest
0 голосов
/ 30 апреля 2018

Мне интересно, есть ли способ сделать какую-то «ссылку» между Java-приложением и одним окном CMD, где я могу отправить несколько команд отдельно -> без компоновщика. Допустим, следующая команда должна быть рассчитана, но помещена в то же окно CMD.

В следующем примере я попытался использовать BufferedWriter.write, который не работает. Заранее благодарю за ответы.

Main.java

import java.io.IOException;

public class Main {

    public static void main(String[] args) throws IOException {

        CmdProcess cmdProcess = new CmdProcess();

        cmdProcess.executeCmdCommand("echo Hello World");
        // I do not want to post commands together
        cmdProcess.executeCmdCommand("ping localhost");
    }
}

CmdProcess.java

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;

public class CmdProcess {

    public CmdProcess() throws IOException {
        startUpProcess();
    }

    private Process cmd;
    private BufferedWriter writer;

    private void startUpProcess() throws IOException {
        String startCommand = "cmd.exe /c start ";
//        init CMD
        try {
            setCmd(Runtime.getRuntime().exec(startCommand));
        } catch (IOException e) {
            System.err.println(e.toString());
            throw new IOException("Not able to launch CMD in CmdProcess.startUpProcess().");
        }
//        init writer
        writer = new BufferedWriter(new OutputStreamWriter(getCmd().getOutputStream()));
    }

    public void executeCmdCommand(String command) throws IOException {
        writer.write(command);
        writer.flush();
    }

    public Process getCmd() {
        return cmd;
    }

    public void setCmd(Process cmd) {
        this.cmd = cmd;
    }

}

1 Ответ

0 голосов
/ 30 апреля 2018

Используя Runtime.getRuntime (). Exec (команда String), вы можете запускать несколько команд из одной командной строки или скрипта, используя условные операторы.

command1 & command2 - Executes comand1 and then command2
command1 && command2 - 2nd command executes if 1st command exeutes successfully
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...