我正在通过java执行一些只在命令提示符中输入的cmd命令。 我想知道是否有办法通过Java以编程方式获取并回复命令提示问题?
例如:我在本地向我的GIT结构添加一个远程GIT存储库,因此当我执行:
时$ git remote add [url],
我收到提示输入密码。我可以捕获此消息(例如将消息传递给用户)并在同一命令提示符下编程对象/ cmd窗口回复。
(AND显式位于那里,因为执行上述命令,读取提示回复,关闭命令提示符,通过新的cmd命令在新的,因此不相关的新提示窗口中发送密码是无用的。)
答案 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
配置设置。