Re: using jave to run linux and windows commands
Pat wrote:
hi all
I would like to write a gui to run windows and linux commands, is this
possable ?
the aim would be to write a GUI that would run on top of the os and for
example, I would like to run dir on a windows box i.e. I would click
dir on the windows box, or else on linux run ls on the Linux box ?
would this be possable and what library's would you use to do this ?
Thanks for you help in advance
Pat Rice
Its a bit cumbersome. The dir command is not a "dir.exe" program but
instead a buildin command of the command prompt. Therefore you have to
some extra tricks to get it working. Here is a complete example that
works and can be used for running any type of commands. On unix you
don't need the temp file ie:
String[] params = {"df", "-k", "/" + path};
Process p = Runtime.getRuntime().exec(params);
will do the trick.
import java.io.*;
public class Test {
public static void main(String[] args) {
File script = new File(System.getProperty("java.io.tmpdir"),
"script.bat");
PrintWriter writer = null;
InputStream reader = null;
try {
writer = new PrintWriter(new FileWriter(script, false));
writer.println("dir");
writer.close();
// get the output from running the .bat file
Process p =
Runtime.getRuntime().exec(script.getAbsolutePath());
reader = new BufferedInputStream(p.getInputStream());
StringBuffer buffer = new StringBuffer();
while (true) {
int c = reader.read();
if (c == -1) {
break;
}
buffer.append((char) c);
}
String outputText = buffer.toString();
reader.close();
System.out.println("outputText = " + outputText);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (writer != null) {
writer.close();
}
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
// do nothing
}
}
}
}
}
regards
Anders Holmbech Brandt