2

我正在通过 java 执行一些仅在命令提示符下输入的 cmd 命令。我想知道是否有一种方法可以通过 Java 以编程方式获取和回复命令提示符问题?

例如:我在本地将一个远程 GIT 存储库添加到我的 GIT 结构中,所以当我执行时:

$ git remote add [url],

系统提示我输入密码。我可以捕获此消息(例如将消息传递给用户)并在同一命令提示符编程对象/cmd 窗口中回复。

(AND 明确在其中,因为执行上述命令、阅读提示回复、关闭命令提示、在新的因此不相关的新提示窗口中通过新的 cmd 命令发送密码是无用的)。

4

2 回答 2

3

如果您正在使用 Runtime.getRuntime().exec 执行命令,则捕获/监视子进程的输入流并写入输出流以向其发送消息。

例如

    Process process = Runtime.getRuntime().exec("Command ");        
    OutputStream pout = process.getOutputStream();
    PrintWriter pw = new PrintWriter(pout);
    pw.println("Command response here");
于 2012-10-09T17:14:33.940 回答
0

您可以通过使用 aProcessBuilder将该命令作为Process. 在这种情况下,该进程通常不会直接与命令窗口对话,因此如果需要,您必须将其输出打印给用户。

请注意,某些进程特别注意不要从标准输入读取密码,而是从控制台窗口读取密码。在这种情况下,上述方法可能不起作用。通常命令确实提供了一些方法来指定密码的不同来源。的情况下git,请搜索GIT_ASKPASS环境变量以及core.askpass配置设置。

于 2012-10-09T17:07:55.783 回答