plaidshirt
plaidshirt

Reputation: 5671

Execute Windows commands from Java

I try to use following command to execute a Windows command in a given directory.

try{
    String command = "cmd /c start cmd.exe";
    Process child = Runtime.getRuntime().exec(command);
    OutputStream out = child.getOutputStream();

    out.write("cd /d C:\\_private\\Files\\testfiles".getBytes());
    out.flush();
    out.write("for /f \"DELIMS=\" %x in ('dir /ad /b') do move \"%x*.*\" \"%x\\\"".getBytes());
    out.close();
}catch(IOException e){
}

It just open up a Command prompt in directory, where Java project is located.

Upvotes: 0

Views: 1943

Answers (1)

Thomas Weller
Thomas Weller

Reputation: 59279

That process is already terminated. You only start cmd to start another cmd. That first cmd, to which you have a variable and to which you're writing is gone. Only the second one remains open.

Instead, start CMD only once and tell it to remain open:

String command = "cmd /k";

Next, please have a look on how to start programs with arguments.

Process process = new ProcessBuilder("cmd.exe", "/k").start();

Upvotes: 3

Related Questions