原文地址:http://sealbird.iteye.com/blog/1202214
- 2008-09-26 19:44当要调用一个外部程序的时候,java提供了exec方法,具体用法是:Runtime.getRunTime.exec("cmd /C Start mailto: abc@xxx.com").其中cmd /c是调用cmd下的start命令,它相当于对一个文件双击。也可以用Runtime.getRunTime.exec("c:\\EXCEl.exe d:\\a.xls")来打开D盘下的excel文件.
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- public class test {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Runtime rn=Runtime.getRuntime();
- Process p= null;
- try {
- //p = rn.exec( "cmd /k dir ");
- p = rn.exec( "C:\\Windows\\system32\\notepad.exe f:\\gg.txt");
- InputStream in =p.getInputStream();
- BufferedReader br = new BufferedReader(new InputStreamReader(in));
- String str = null;
- while((str=br.readLine())!= null){
- System.out.println(str);
- }
- br.close();
- } catch (Exception e) {
- System.out.println( "Error exec notepad ");
- }
- }
- }
- /*
- public class Test {
- /**
- * @param args
- * @throws IOException
- * @throws InterruptedException
- */
- /*public static void main(String[] args) throws IOException, InterruptedException
- {
- // TODO 自动生成方法存根
- Process process = Runtime.getRuntime().exec("C:\\Program Files\\Microsoft Office\\Office12\\winword.exe f:\\gg.docx");
- //process.waitFor( );cmd /c java f:\\T
- /*String ls_1;
- Process process = Runtime.getRuntime().exec("cmd /c dir \\windows");
- BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
- while ( (ls_1=bufferedReader.readLine()) != null)
- System.out.println(ls_1); */
- //C:\\Program Files\\Microsoft Office\\Office12\\winword.exe
- // C:\Program Files\Microsoft Office\Office12\winword.exe
- /*
- process.waitFor( );
- //process.destroy();
- }
- }*/
- Process process = Runtime.getRuntime().exec("cmd /c del f:\\aaa.doc");
- 这样的调用是没有问题~
- 真正最正确的用BAT运行JAVA不显示DOS窗口(连闪一下都不闪)
- 今天写一个独立于RCP项目之外的SWT小工具,需要用批处理启动,偶写了一个批处理没闪DOS窗口,看得同事一愣一愣的。于是赶快把自己当年一点心得和大家分享下。
- 很多朋友在WINDOWS下会用批处理去启动自己的java程序,
- 一般的写法是
- 运行class:
- java xx
- 运行jar:
- java -jar xxx.jar
- 但是这样运行会有一个恶心的对话框停在那直到我们关闭程序。
- 于是很多人说可以这样
- 运行class:
- start javaw xx
- 运行jar:
- start javaw -jar xxx.jar
- 这种方法DOS窗口还是会一闪而过,这就算解决问题了吗?!网上很多人说是的.
- 对我们这种追求完美的人来说闪一下还是不能接受滴.
- 于是终极解决方案出现了!
- 那就是在批处理第一行加上@echo off
- 这样我们的批处理就变成了
- 运行class:
- @echo off
- start javaw xx
- 运行jar:
- @echo off
- start javaw -jar xxx.jar
- 快试试吧,绝对不闪了。哈哈哈。
- 解释一下
- echo off
- 表示在此语句后所有运行的命令都不显示命令行本身
- @ 表示运行时不显示本命令行
- public class TestCmd {
- public TestCmd() {
- }
- public static void main(String args[]) {
- try {
- // 登网站
- Process process = Runtime.getRuntime().exec(
- "cmd.exe /c start http://www.hao123.net/");
- // 使用用Ping命令
- Process ee = Runtime.getRuntime().exec(
- "cmd.exe /c start ping 10.5.2.19");
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- 运行这个类你会看到效果
- 这个是运行了ping命令
- 我使用Process pc = Runtime.getRuntime().exec("cmd /c ping 127.0.0.1");可以成功