With Java, run multiple commands in the same cmd.exe window
Solution 1
This one works... using && operator you can add one or commands to be executed in same command prompt
try {
Process p = Runtime
.getRuntime()
.exec("cmd /c start cmd.exe /K \"dir && ping localhost && echo end\"");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Consider the solution in here also
Update from the questioner: Solution to execute commands in cygwin
getRuntime().exec("cmd /c start C:/cygwin64/bin/bash.exe --login -c \"ls ; whoami ; exec bash\"");
Solution 2
If you do not need to show a console on the screen, that is easy. You have some simple steps to follow :
- start a
Process
via `Process cmd = new ProcessBuilder("cmd.exe").start(); - send your commands to
cmd.getOutputStream()
- read the result of the commands from
cmd.getInputStream()
and/orcmd.getErrorStream()
- when finished with it close
cmd.getOutputStream()
, and if necessary kill the process bycmd.destroy()
Optionnaly, you can have output and error stream to be merged :
Process cmd = new ProcessBuilder("cmd.exe").redirectErrorStream(true).start();
then you simply ignore cmd.getErrorStream()
and only read from cmd.getInputStream()
singe3
Updated on June 14, 2022Comments
-
singe3 almost 2 years
I'm developing a Java application that will be run on a Windows computer occasionally. At some point I need to run a Cygwin prompt and performs some commands in it.
I've found a topic where the Runtime class is used: http://www.javaquery.com/2011/03/how-to-execute-multiple-command-in.html
However it doesn't launch a real cmd.exe window, it's only run in background and the output is just printed on the Eclipse console.
I'm looking for a solution to run a real cmd.exe window and I need to pass as many commands as I want to that windows shell. Is this possible?