首页 > 解决方案 > Java:运行控制台命令并保持控制台运行以获取更多控制台命令

问题描述

对不起,措辞不好的问题,这并不容易..

  1. 我需要运行一个控制台命令,而不是仅仅使用 System.exec 调用它,我需要稍后访问该进程。

  2. 所以我决定和ProcessBuilder

    List<String> commands = new ArrayList<String>(); commands.add("cmd.exe"); //setting up what shell is used commands.add("/c"); commands.add(commandString); //adding the actual command ProcessBuilder pb = new ProcessBuilder(commands); Process running = pb.start();

    1. 我怎样才能继续写同一个shell?因此,当我调用多个命令时,它们不是在新 shell 中执行,而是在同一个 shell 中执行。这是必要的,因为有人可能会使用诸如 CD 之类的命令来更改进一步输入的结果。

示例:在一个 shell 中执行:CD 和 dir/ls 与调用两个 shell 实例不同。

  1. 我也希望能够使用管道,而使用 I 或 II 是不可能的(至少对我而言)

解决方案必须适用于 windows 和 linux。我很高兴有人可以提供任何帮助。网上有人做过教程: https ://alvinalexander.com/java/java-exec-system-command-pipeline-pipe

但是看起来有点……麻烦

多谢你们

PD 我认为最简单的解决方案是以某种方式直接写入外壳。但现在我不知道该怎么做。

标签: javaprocessconsolepipestdin

解决方案


推荐阅读