Java:运行多个 shell 命令?

标签 java android shell adb command-prompt

好的。我一直在到处寻找如何在 java 的单个命令提示符上执行多个命令。我需要做的是这个,但不是在命令行中,而是在代码中。

执行:

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

..基本上我想从程序运行adb命令!!!这是到目前为止我的java代码:

主程序.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 命令。

最佳答案

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

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

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

尽管您正在寻找的内容已经在 ddms.bat 中生成,它提供了到 adb 的完整可视链接

关于Java:运行多个 shell 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7424544/

相关文章:

shell - 第二次配置会重新运行脚本中的所有 shell 命令吗?

java - Spring 的 AsyncRestTemplate 不适用于压缩内容,获取压缩内容而不是 json 对象

android - 日本字符在 Android TextView 和按钮中显示奇怪的间距

Android RecyclerView Adapter DataBinding - 找不到符号 {layout}BindingImpl

android - 市场更新后自动重启应用程序

linux - 查找在特定日期从特定计算机登录的所有用户

bash - 创建一个 shell 脚本来检查网络连接

java - Android FFMPEG java 连接多个文件

java - Eclipse RCP 中的全局变量

java - 无法将 'logging.level.org.quartz' 下的属性绑定(bind)到 org.springframework.boot.logging.LogLevel