Process process = Runtime.getRuntime().exec("***");
exec("")方法中是否可以把多个命令写在一起???
比如下面的命令:
1.cd d:
2.jar  jar xvf  *.jar

解决方案 »

  1.   

    把多条命令写在一个shell里面,
    test.sh:
    #!/bin/sh
    cd d:
    tar -xvf *.jar
    ~                                                                                       
    String[] commandstr = {"/bin/sh","test.sh"};
    Process p = Runtime.getRuntime().exec(commandstr);
      

  2.   


    或者说你定义一个数组,
    String[] commandstr = {"cd d","jar jar xvf *.jar"};
    Process p = Runtime.getRuntime().exec(commandstr);
      

  3.   

    exec()被重载了,楼主看看JDK文档
      

  4.   

    按二楼所说为什么会报错啊?public class Test {
    public static void main(String[] args) {
    try {
    String[] commandstr = {"cd d:","jar xvf d:/test.jar"};
    Process process = Runtime.getRuntime().exec(commandstr);
    //process.waitFor();
    } catch (Exception e) {
    e.printStackTrace();
    }
    }}java.io.IOException: Cannot run program "cd d:": CreateProcess error=2, ?????????
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:459)
    at java.lang.Runtime.exec(Runtime.java:593)
    at java.lang.Runtime.exec(Runtime.java:466)
    at Test.main(Test.java:6)
    Caused by: java.io.IOException: CreateProcess error=2, ?????????
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(ProcessImpl.java:81)
    at java.lang.ProcessImpl.start(ProcessImpl.java:30)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:452)
    ... 3 more
      

  5.   

    如果是windows的话,写在bat文件里,调用bat文件
    如果是unix,写在shell里,调用shell
      

  6.   


     String[] commandstr = {"cmd cd d:","jar xvf d:/test.jar"};