Я пытался выполнить 5 команд одну за другой в среде cmd.exe windows, используя Process builder
или Runtime
в Java.
Команды, которые я хочу выполнить:
- открыть cmd.exe
- ftp
- открыть «someip»
- имя пользователя
- пароль
Обратите внимание, что после каждой команды я буду нажимать кнопку ввода клавиатуры.
Теперь код, который я пробовал до сих пор:
Код 1:
Runtime.getRuntime().exec("cmd /c start cmd.exe /K \"ftp && open \"");
в этом случае появляется cmd, и это перенаправить на ftp , но вторая команда open не будет выполнена .
поэтому я пошел дальше и попробовал с ProcessBuilder
с помощью этой link , все равно не повезло: (
Код 2:
Process p = new ProcessBuilder("cmd.exe").redirectErrorStream(true).start();
new Thread(new SyncPipe(p.getErrorStream(), System.err)).start();
new Thread(new SyncPipe(p.getInputStream(), System.out)).start();
PrintWriter stdin = new PrintWriter(p.getOutputStream());
stdin.println("ftp");
stdin.println("open "+iftpHost);
stdin.close();
int returnCode = p.waitFor();
System.out.println("Return code = " + returnCode);
для класса SyncPipe, пожалуйста, см. указанную ссылку.
Вывод консоли Eclipse для кода 2 :
Microsoft Windows [Версия 10.0.18362.778] (c) Корпорация Microsoft, 2019. Все права защищены.
C:\Users\**username**\eclipse-workspace\**Project name**>ftp
Bad command or it is not implemented here.
User (ipaddress): Login failed.
C:\Users\**username**\eclipse-workspace\**Project name**>Return code = 0