cmd /c dir 是执行完dir命令后关闭命令窗口。
cmd /k dir 是执行完dir命令后不关闭命令窗口。
cmd /c start dir 会打开一个新窗口后执行dir指令,原窗口会关闭。
cmd /k start dir 会打开一个新窗口后执行dir指令,原窗口不会关闭。
同时exec还有几个重载函数:
使用Runtime.getRuntime().exec()方法可以在java程序里运行外部程序。
1. exec(String command)
2. exec(String command, String envp[], File dir)
3. exec(String cmd, String envp[])
4. exec(String cmdarray[])
5. exec(String cmdarray[], String envp[])
6. exec(String cmdarray[], String envp[], File dir)
一般的应用程序可以直接使用第一版本,当有环境变量传递的时候使用后面的版本。其中2和6版本可以传递一个目录,标识当前目录(也即command命令在这个目录下面执行),因为有些程序是使用相对目录的,所以就要使用这个版本。
还有使用Runtime和waitFor时碰到的一些阻塞和缓冲区的问题
参考:http://www.cnblogs.com/yejg1212/archive/2013/06/02/3114242.html
http://blog.sina.com.cn/s/blog_93b1f3f001013vbl.html
http://xiaomacooperation.blog.163.com/blog/static/12026079520138653829859/