我需要从 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);
}
那应该可以完成这项工作:
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);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)