muszę wykonać z Java skrypt wsadowy, który ma następująceJava: Wykrywanie wiersz użytkownika po uruchomieniu skryptu wsadowego z Java
1) Po jej uruchomieniu wykonuje długi (do kilku sekund) zadanie.
2) Następnie wyświetla monit "Hasło:".
3) Następnie użytkownik wpisze hasło i naciśnie klawisz Enter.
4) Następnie skrypt wykonuje swoje zadanie.
Wiem, jak uruchomić skrypt z Java, wiem, jak odczytać wyjście skryptu wsadowego w Javie, ale nie wiem, jak czekać na pojawienie się monitu o hasło (jak się dowiedzieć, że skrypt wsadowy oczekuje na wprowadzenie hasła).
Moje pytanie brzmi: Jak się dowiedzieć, kiedy skrypt wsadowy wydrukował monit?
Obecnie mam następujący kod:
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);
}
Czy jesteś pewien, że jest getOutputStream()? W tej chwili widzę część danych wyjściowych skryptu wsadowego za pomocą metody input.readLine() (zobacz instrukcję rejestrowania w moim fragmencie kodu). Ale nie wszystkie - nie mogę wykryć zachęty w ten sposób. –
moja pierwsza odpowiedź była nonsensem. Jawadoc wyjaśnia strumień wyjściowy i wejściowy: http://download.oracle.com/javase/6/docs/api/java/lang/Process.html. – remipod
Dzięki za twój kod. Niestety, zapytanie o hasło NIE jest zakończone znakiem nowej linii. Dlatego readline nie działa w tym przypadku. –