我怎样才能在 java 中打开一个隐藏的命令,然后在上面写命令?

How can i open an hidden cmd in java and then write on it commands?

我想做的是在应用程序启动时打开一个新的cmd,然后在不同的时刻在上面写入不同的命令。 示例:我启动我的应用程序,它运行一个隐藏的新命令,因此无法看到,然后它写入 "cd ..",应用程序等待十秒(例如)然后写入 "cd .." 又一次,最后它写入 "dir" 并打印出 'dir' 命令的结果。 我已经尝试使用此代码来做到这一点

public static void main(String[] args) throws IOException{
    Runtime rt = Runtime.getRuntime();
    Process process = rt.exec("cmd /c cd .. ");
    process = rt.exec("cmd /c cd .. ");

    process = rt.exec("cmd /c dir");
    BufferedReader commReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
    String line = "";

    while((line = commReader.readLine()) != null){

        System.out.println(line);
    }

}

但正如我所见,它不起作用,因为它在不同的 cmd 上运行命令。 很抱歉我的英语不好,有人知道如何解决吗?

您正在覆盖您的 process 变量,因此它当然会执行多个 cmd 实例。

你需要做的是打开一个单独的进程,然后将命令写入它的OutputStream,它连接到子进程的正常输入。

public static void main(String[] args) throws IOException {
        ProcessBuilder builder = new ProcessBuilder("cmd");
        Process process = builder.start();

        OutputStream stdin = process.getOutputStream();
        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(stdin));

        writer.write("cd ..\n");
        writer.write("dir\n");
        writer.flush();
        writer.close();

        BufferedReader commReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
        String line = "";

        while((line = commReader.readLine()) != null){

            System.out.println(line);
        }
    }