Java中调用windows cmd命令的两种方式
2015-04-28 17:25
621 查看
Java中调用windows cmd命令的方式
使用Runtime方式进行命令调用import java.io.IOException; import java.util.ArrayList; import java.util.List; public class CmdTest{ private static List<String> cmdList = new ArrayList<String>(); public static void main(String[] args){ initCmdList(); try { //执行命令 Process p = Runtime.getRuntime().exec(cmdList.toArray(new String[0])); } catch (IOException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } } private static void initCmdList(){ cmdList.add("cmd.exe"); cmdList.add("/c"); cmdList.add("ipconfig"); } }
在上面的代码中使用了cmdList.toArray()作为参数,而不是直接使用一个String作为参数,是因为当命令列表中存在很多参数的时候,可能会涉及到很多空格,使用数组的方式调用,可以避免写空格的过程中出现错误.
使用ProcessBuilder方式进行命令调用
import java.io.IOException; import java.util.ArrayList; import java.util.List; public class CmdTest{ private static List<String> cmdList = new ArrayList<String>(); public static void main(String[] args){ initCmdList(); ProcessBuilder pb = new ProcessBuilder(cmdList); // ProcessBUilder pb = new ProcessBuilder(); // pb.command(cmdList); try { //执行命令 pb.start(); //如果有返回值,d } catch (IOException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } } private static void initCmdList(){ cmdList.add("cmd.exe"); cmdList.add("/c"); cmdList.add("ipconfig"); } }
ProcessBuilder 接收一个List作为命令列表,其中List中的每一个参数都会用空格隔开,同样也方便设置较为复杂的参数,以免出错.
ProcessBuilder和Runtime不同的地方在于,
Runtime的命令参数可以一次性写完整,或者使用数组的方式将命令分割.
ProcessBuilder的命令如果有空格,必须使用List的方式进行分割.
相关文章推荐
- Java调用Linux命令两种方式的例子
- java 调用 windows 的 cmd 命令
- java通过Runtime调用windows的cmd.exe命令
- Java调用Windows内cmd命令
- Java调用Linux命令两种方式的例子
- Windows平台Java调用cmd命令执行程序
- C/C++ 通过管道的方式调用Windows ping命令 且 不显示黑窗口(cmd 窗口)
- java代码webservice客户端的两种调用方式
- java中调用cmd命令
- cmd命令对java程序进行编译时出现:“编码GBK的不可映射字符”两种解决方法,以及dos下帮助文档的制作
- java(jeecg框架) 调用CXF WebService接口的两种方式
- java执行windows 的cmd 命令说明
- Java 执行 多行 cmd 命令 创建 快捷方式
- JAVA调用C or C++的两种方式
- Java中多个窗口间调用的两种方式
- Android调用Linux命令修改文件权限的两种实现方式
- go 调用shell命令 两种方式(有无返回值)
- Java调用CMD命令
- java实现liunx,windows命令的调用
- JAVA调用cmd命令将shp数据存入postgis