I can't get runtime.exec to execute a program in
Java. I am trying to execute a bat file. I read that in order to run bat files as opposed to .exe files the runtime command has to include "cmd /c start" before the name of the bat file. I have run bat files successfully this way before.
The command that I am running works when typed from the command line. It is:
z:/n4/pkg/MrServers/MrVista/Simu/StartSimEnv.bat -AutoStart GOLD_256x512.dat
When I try the following code:
File file = new File(imageDir);
cmd = "C:\WINDOWS\system32\cmd /c start "+simDir+"StartSimEnv.bat -AutoStart " + imageName;
IJ.log("cmd = " + cmd);
Runtime runtime = Runtime.getRuntime();
try{
Process proc = runtime.exec(cmd,null,file);
}
catch(Exception e)
{
IJ.log(e.toString());
}
StartSimEnv.bat file gives a message about the usage being wrong as if I'm giving the wrong parameters. If I delete imageName from the cmd
string it doesn't complain about usage but doesn't do the task I want it to do.
I tried putting the parameters in an array as follows:
File file = new File(imageDir);
String[] cmdArray = {cmdPath, "/c", "start",simDir+"StartSimEnv.bat","-AutoStart",imageName};
IJ.log("cmdArray = " + cmdArray[0] + " " + cmdArray[1] + " " + cmdArray[2] + " " + cmdArray[3] + " " + cmdArray[4] + " " + cmdArray[5]);
Runtime runtime = Runtime.getRuntime();
try{
Process proc = runtime.exec(cmdArray,null,file);
}
catch(Exception e)
{
IJ.log(e.toString());
}
I still get a message about usage.
I have made efforts with process builder also but can't get that to work either. Does anyone have any ideas why this isn't working?