laufen muß ich von Java eine Batch-Skript auszuführen, dieJava: Erkennen Benutzereingabeaufforderung, wenn eine Batch-Skript von Java
folgenden nicht1) Sobald es gestartet wird es eine langwierige Aufgabe (bis zu mehreren Sekunden) führt.
2) Danach erscheint die Aufforderung "Passwort:".
3) Dann gibt der Benutzer das Passwort ein und drückt die Eingabetaste.
4) Dann schließt das Skript seine Arbeit ab.
Ich weiß, wie man das Skript von Java aus startet, ich weiß, wie man die Ausgabe des Batch - Skripts in Java liest, aber ich weiß nicht, wie ich auf die Passwortabfrage warten soll Batch-Skript wartet auf die Passworteingabe).
Meine Frage ist also: Wie erfahren Sie, wenn das Batch-Skript die Eingabeaufforderung gedruckt hat?
Im Moment habe ich folgenden Code:
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);
}
Bist Du sicher ist getOutputStream()? Im Moment kann ich einen Teil der Ausgabe des Batch-Skripts mit input.readLine() sehen (siehe Logging-Anweisung in meinem Code-Snippet). Aber nicht alles - ich kann die Aufforderung auf diese Weise nicht erkennen. –
meine erste Antwort war Unsinn. Der Javadoc erklärt den Ausgabe- und Eingabestream: http://download.oracle.com/javase/6/docs/api/java/lang/Process.html. – remipod
Danke für deinen Code. Leider wird die Passwortabfrage NICHT durch einen Zeilenumbruch beendet. Deshalb funktioniert Readline in diesem Fall nicht. –