Java:从Java运行批处理脚本时检测用户提示

DP_*_*DP_ 5 java batch-file

我需要从Java执行批处理脚本,该脚本执行以下操作

1)一旦启动它执行一个冗长的(最多几秒)任务.

2)此后,它会显示提示"密码:".

3)然后,用户输入密码并按Enter键.

4)然后,脚本完成其工作.

我知道如何从Java启动脚本,我知道如何在Java中读取批处理脚本的输出,但我不知道如何等待密码提示出现(我如何知道批处理脚本正在等待密码输入).

所以,我的问题是:如何知道批处理脚本何时打印了提示?

目前,我有以下代码:

final Runtime runtime = Runtime.getRuntime();
final String command = ... ;

final Process proc = runtime.exec(command, null, this.parentDirectory);

final BufferedReader input = new BufferedReader(new InputStreamReader(
  proc.getInputStream()));

String line = null;

while ((line = input.readLine()) != null) {
 LOGGER.debug("proc: " + line);
}
Run Code Online (Sandbox Code Playgroud)

rem*_*pod 3

那应该可以完成这项工作:

  public static void main(final String... args) throws IOException, InterruptedException {
    final Runtime runtime = Runtime.getRuntime();
    final String command = "..."; // cmd.exe

    final Process proc = runtime.exec(command, null, new File("."));

    final BufferedReader input = new BufferedReader(new InputStreamReader(proc.getInputStream()));

    StringBuilder sb = new StringBuilder();
    char[] cbuf = new char[100];
    while (input.read(cbuf) != -1) {
        sb.append(cbuf);
        if (sb.toString().contains("Password:")) {
            break;
        }
        Thread.sleep(1000);
    }
    System.out.println(sb);
}
Run Code Online (Sandbox Code Playgroud)