我想从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 \工作空间\试验>
错误在哪里?
答案 0 :(得分:2)
错误就是命令本身。只需尝试在命令行中执行的操作。
您的代码将类似“cmd.exe md c:\ blabla”的内容传递给系统。这开始了一个新的shell。只是将shell命令传递给cmd.exe并不能解决问题。尝试使用
cmd /c md c:\blabla
/c
在这里完全不同。