实际上我有两个命令:
在执行第二个命令之前,我需要执行第一个命令。我绑定使用Runtime.getRuntime().exec(cmd)
方法执行两个命令,但第二个命令失败,因为它取决于第一个命令。我尝试了很多组合,但没有成功。有人可以帮帮我吗?
答案 0 :(得分:1)
您可能正在执行两个单独的exec命令,产生单独的进程,因此第一个进程中的任何操作都不会显示在第二个进程中。通过将所有命令放入脚本(bash,ksh等)并从Java程序中调用一次来解决此问题。
参数化您的脚本,以便传递参数。
以下是writing your first shell script
的一些帮助[编辑] 正如@RNJ所提到的,您可以查看使用ProcessBuilder将环境变量传递给每个生成的进程。如果您可以提前指定正在创建的文件的名称,那么这将没有问题。从上面的API链接获取的示例代码...
ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2");
Map<String, String> env = pb.environment();
env.put("VAR1", "myValue");
env.remove("OTHERVAR");
env.put("VAR2", env.get("VAR1") + "suffix");
pb.directory(new File("myDir"));
Process p = pb.start();