Java拦截命令提示回复

时间:2012-10-09 16:39:45

标签: java command cmd prompt reply

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

例如:我在本地向我的GIT结构添加一个远程GIT存储库,因此当我执行:

$ git remote add [url],

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

(AND显式位于那里,因为执行上述命令,读取提示回复,关闭命令提示符,通过新的cmd命令在新的,因此不相关的新提示窗口中发送密码是无用的。)

2 个答案:

答案 0 :(得分:2)

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

E.g

    Process process = Runtime.getRuntime().exec("Command ");        
    OutputStream pout = process.getOutputStream();
    PrintWriter pw = new PrintWriter(pout);
    pw.println("Command response here");

答案 1 :(得分:0)

您可以使用ProcessBuilder将该命令作为Process启动,以便与另一个命令的标准输入/输出/错误流进行交互。在这种情况下,该过程通常不会直接与命令窗口通信,因此如果需要,您必须将其输出打印给用户。

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