Java: запустить несколько команд оболочки? - PullRequest
1 голос
/ 15 сентября 2011

OK.Я везде искал, как выполнить несколько команд в одной командной строке из Java.Что мне нужно сделать, это, но не в командной строке, в коде.

Выполнить:

cd C:/Android/SDK/platform-tools
adb install superuser.apk

.. В основном я хочу запускать команды adb из программы !!!Вот мой код Java на данный момент:

MainProgram.java

public class MainProgram {
   public static void main(String[] args) {
      CMD shell = new CMD();
      shell.execute("cmd /K cd C:/Android/SDK/platform-tools"); //command 1
      shell.execute("cmd /C adb install vending.apk"); // command 2
   }
}

CMD.java

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class CMD {
CMD() {
}
// THIS METHOD IS WHERE THE PROBLEM IS
void execute(String command) {
    try
    {           
    Process p = Runtime.getRuntime().exec(command);

    BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));

    BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));

    // read the output from the command

    String s = null;        
    while ((s = stdInput.readLine()) != null) {
        System.out.println(s);
    }

    while ((s = stdError.readLine()) != null) {
        System.out.println(s);
    }
  }     
catch(Exception e){  
    e.printStackTrace();
}
}
}

Так что происходит ... я могу запустить первыйкоманда, но этот cmd завершается, и когда я выполняю вторую команду, создается новый cmd, поэтому я получаю сообщение об ошибке, потому что я не в нужном каталоге.Я попробовал одностроковую команду «cmd / Cd C: / blablabla / C adb remount», но она просто замерзла ...

По сути, команда 1 выполняется и завершается, затем команда 2 выполняетсяпрекращается.Я хочу, чтобы это было так: команда 1 выполнена, команда 2 выполнена, завершена.

В основном я спрашиваю, как я могу выполнить обе эти команды подряд в одной командной строке ???

Моя последняя цель - создать JFrame с кучей кнопок, которые при нажатии выполняют разные команды adb.

Ответы [ 2 ]

0 голосов
/ 07 марта 2012

Создайте файл как something.bat и установите для него значение:

cd C:/Android/SDK/platform-tools
adb install superuser.apk

Затем позвоните:

Process p = Runtime.getRuntime().exec("something.bat");

все команды в файле bat выполнены.

0 голосов
/ 15 сентября 2011

Самый простой способ - создать командный файл, а затем вызвать его из программы. конечно, вы могли бы просто сказать

C:/Android/SDK/platform-tools/adb install superuser.apk

нет необходимости переходить к файлу, если вы назовете его напрямую

хотя то, что вы ищете, уже сделано в ddms.bat, который предоставляет полную визуальную ссылку на adb

...