I want to run cmd.exe commands from java (for example md C:\\blabla to create a new directory C:\\blabla ) My code looks like this and it runs without any errors:
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);
}
}
But if I go to C:\\ there is no folder blabla as I would expect, since manually typing md C:\\blabla in cmd.exe works fine. I also tried "C:\\Windows\\System32\\cmd.exe" instead of "cmd.exe" but no use.
The output in the Console looks like this:
Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\\Users\\Selphiron\\workspace\\Test>
Where is the mistake?
The mistake is the command itself. Just try what you did in the command line.
Your code passes something like "cmd.exe md c:\\blabla" to the system. That starts a new shell. Just passing a shell command to cmd.exe doesnt do the trick. Try to use
cmd /c md c:\blabla
The /c
makes all the difference here.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.