您如何用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编写命令提示符?的主要内容,如果未能解决你的问题,请参考以下文章