使用apache commons exec运行简单的cmd.exe命令

时间:2014-11-05 16:06:11

标签: java apache cmd apache-commons-exec

我想从java运行cmd.exe命令(例如md C:\ blabla创建一个新目录C:\ blabla) 我的代码看起来像这样,它运行没有任何错误:

import java.io.IOException;
import org.apache.commons.exec.CommandLine;
import org.apache.commons.exec.DefaultExecutor;
import org.apache.commons.exec.ExecuteException;

public class Test {

    public static void main(String[] args) throws ExecuteException, IOException {
        CommandLine cmdLine = new CommandLine("cmd.exe");
        cmdLine.addArgument("md");
        cmdLine.addArgument("C:\\blabla");
        DefaultExecutor executor = new DefaultExecutor();
        executor.execute(cmdLine);
    }
}

但是如果我去C:\没有我期望的文件夹blabla,因为在cmd.exe中手动输入md C:\ blabla工作正常。我也试过" C:\ Windows \ System32 \ cmd.exe"而不是" cmd.exe"但没用。

控制台中的输出如下所示:

Microsoft Windows [Version 6.1.7601] 版权所有(c)2009 Microsoft Corporation。保留所有权利。

C:\用户\ Selphiron \工作空间\试验>

错误在哪里?

1 个答案:

答案 0 :(得分:2)

错误就是命令本身。只需尝试在命令行中执行的操作。

您的代码将类似“cmd.exe md c:\ blabla”的内容传递给系统。这开始了一个新的shell。只是将shell命令传递给cmd.exe并不能解决问题。尝试使用

cmd /c md c:\blabla

/c在这里完全不同。