Reputation: 5671
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
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