您如何用Java编写命令提示符?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了您如何用Java编写命令提示符?相关的知识,希望对你有一定的参考价值。

背景

我从Java应用程序启动了命令提示符。现在,我想将命令输入到刚刚生成的命令提示符中。您如何在Java程序刚刚生成的提示中运行命令?

我尝试过的事情

我的代码创建一个启动命令提示符的过程。然后,它获取进程的OutputStream尝试对其进行写入。但是我看不到有任何变化。它应该只是更改目录,然后在新目录中运行一系列命令。

// Block that makes new command prompt
List<String> commands = new ArrayList<String>();
commands.add("cmd.exe");
commands.add("/c");
commands.add("start");
commands.add("cmd.exe");

// Block that creates a writer to write to new command prompt
ProcessBuilder pb = new ProcessBuilder(commands);
Process p = pb.start();
OutputStream os = p.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os)); 

// Block that actually writes the commands
writer.write(String.format("cd %s
", PATH);
writer.write(OTHER_COMMANDS); // I'm ommiting the other commands because there's a lot
writer.flush();
writer.close();

我不确定为什么命令没有写到弹出的命令提示符中。我看到一个新的命令提示符弹出,但目录从其开始位置未更改。如何在生成的提示中输入命令?

答案
在Java中,我不知道类似的API,实际上可能需要使用JNI或JNA才能访问您需要使用的Windows API。您使用的功能(通过JNI或JNA)将与该其他答案中引用的相同https://docs.microsoft.com/en-us/windows/console/allocconsole。因此,这是一种方法,但是,如果您选择采用该方法,则对如何使用JNI或JNA的完整描述不在这里。
另一答案
您正在写入

first

另一答案
Windows cmd.exe实际上不是纯shell。它是一个终端仿真程序(屏幕上出现的黑色窗口),它是外壳的[[

and

以上是关于您如何用Java编写命令提示符?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Java 中编写正确的微基准测试?

如何在 Java 中编写正确的微基准测试?

cmd如何编译记事本中的代码

您如何为用于 jquery 编码的菜单栏正确编写 CSS 代码?

16年物联网经验告诉您如何用MQTT网关快速接入主流云

如何用xshell编写脚本