0

我想从 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 [版本 6.1.7601] 版权所有 (c) 2009 Microsoft Corporation。版权所有。

C:\Users\Selphiron\workspace\Test>

错误在哪里?

4

1 回答 1

2

错误在于命令本身。只需尝试您在命令行中所做的操作。

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

cmd /c md c:\blabla

/c这里,一切都变得不同了。

于 2014-11-05T16:10:52.653 回答