JAVA - Как запускать команды cmd одну за другой последовательно с некоторым интервалом времени между ними, используя среду выполнения или построитель процессов - JAVA - PullRequest
0 голосов
/ 27 мая 2020

Я пытался выполнить 5 команд одну за другой в среде cmd.exe windows, используя Process builder или Runtime в Java.

Команды, которые я хочу выполнить:

  1. открыть cmd.exe
  2. ftp
  3. открыть «someip»
  4. имя пользователя
  5. пароль

Обратите внимание, что после каждой команды я буду нажимать кнопку ввода клавиатуры.

Теперь код, который я пробовал до сих пор:

Код 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
...