Java:运行多个shell命令?

时间:2011-09-15 00:23:03

标签: java android shell adb command-prompt

行。我一直在寻找如何在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 / C cd C:/ blablabla / C adb remount”,但这只是冻结了......

实质上,执行并终止命令1,然后执行并终止命令2。我希望它是这样的:命令1执行,命令2执行,终止。

基本上我问如何在单个命令提示符下连续运行这两个命令???

我的最终目标是拥有一个带有一组按钮的JFrame,这些按钮在点击时会执行不同的adb命令。

2 个答案:

答案 0 :(得分:0)

最简单的方法是制作一个批处理文件,然后从程序中调用它 当然你可以说

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

如果直接命名,则无需cd到文件

虽然您正在寻找的是ddms.bat,它提供了与adb的完整视觉链接

答案 1 :(得分:0)

将文件创建为something.bat并将内容设置为:

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

然后致电:

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

执行bat文件中的所有命令。