que je dois exécuter à partir de Java un script batch, qui ne suitJava: Détection rapide de l'utilisateur lors de l'exécution d'un script batch de Java
1) Une fois démarré, il effectue un long (jusqu'à plusieurs secondes) tâche.
2) Ensuite, il affiche une invite "Mot de passe:".
3) Ensuite, l'utilisateur tape le mot de passe et appuie sur la touche Entrée.
4) Ensuite, le script termine son travail. Je sais comment lancer le script à partir de Java, je sais lire la sortie du script batch en Java, mais je ne sais pas comment attendre que l'invite du mot de passe apparaisse (comment je sais que le le script batch attend l'entrée du mot de passe). Donc, ma question est: Comment savoir quand le script batch a imprimé l'invite?
Actuellement, je code suivant:
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);
}
Etes-vous sûr qu'il est getOutputStream()? Pour le moment, je peux voir une partie de la sortie du script batch en utilisant input.readLine() (voir l'instruction de journalisation dans mon fragment de code). Mais pas tout - je ne peux pas détecter l'invite de cette façon. –
ma première réponse était un non-sens. Le javadoc explique le flux de sortie et d'entrée: http://download.oracle.com/javase/6/docs/api/java/lang/Process.html. – remipod
Merci pour votre code. Malheureusement, l'invite de mot de passe n'est pas terminée par un saut de ligne. C'est pourquoi readline ne fonctionne pas dans ce cas. –