MajorBuzzkill 2021-11-25 15:33 采纳率: 0%
浏览 192

java调用cmd程序,如何输入确认信息如y/n,或用户名密码

问题遇到的现象和发生背景

想在前端通过websocket实现操作一个控制台程序,中间回涉及到输入用户名密码或者确认的操作。
后端使用ProcessBuilder执行了cmd /c命令,生成了Process。process的输出流可以向调用的程序写入指令,输入流可以获取控制台 输出的部分信息
开发过程中获取process的输入流,用BufferReader.readLine()可以获取大部分程序返回的内容,但不能返回输入确认的信息, 通过输出流可以向程序写入指令,但在程序返回了输入确认信息时,再写入指令是没有反应的
查了一下bat程序的写法,我猜是使用了 set /p指令,输入前有一个prompt内容,没法通过Process类的InputStream获取。

问题相关代码,请勿粘贴截图
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream(), "GBK"));
while ((line = reader.readLine()) != null) {
     //此处无法获取到prompt的内容
    System.out.print(line);     
 }
运行结果及报错内容

通过cmd调用程序正常执行,会出现:

img


此时输入密码并回车即可继续执行。**#补充,密码为密文,输入时不可见**
但首先,process类没有获取到Password for default user:这行
其次,#通过process的OutputStream向程序写入密码,也不会有任何内容返回。

我想要达到的结果

怎样通过java实现调用cmd程序,并能在需要时进行输入?
既要读取到提示信息,又要能继续输入

  • 写回答

2条回答 默认 最新

  • 关注
    
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in, "GBK"));
    
    
    评论

报告相同问题?

问题事件

  • 修改了问题 11月26日
  • 修改了问题 11月26日
  • 修改了问题 11月25日
  • 创建了问题 11月25日

悬赏问题

  • ¥15 请问有会的吗,用MATLAB做
  • ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并—
  • ¥15 ARIMA模型时间序列预测用pathon解决
  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿速度
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序,怎么查看客户esp32板子上程序及烧录地址
  • ¥50 html2canvas超出滚动条不显示