您的位置:首页 > 运维架构 > Shell

java 中调用window系统中的文件,或者执行命令(shell、.CMD、.EXE)并获取返回值(如果有的话)

2011-09-07 01:05 1151 查看
import java.io.BufferedInputStream;

import java.io.IOException;

public class Test {

/**

* @param args

*/

public static void main(String[] args) {

String name1 = "C:/WINDOWS/system32/winmine.exe";

String name2 = "C:/test.cmd";//我CMD里面的内容是 netstat -ano 其他的也可以

String name3 = "java -version";

try {

System.out.println(execCMD(name1, 3));

System.out.println(execCMD(name2, 2));

System.out.println(execCMD(name3, 1));

} catch (IOException e) {

e.printStackTrace();

}

}

/**

*

* @param path 要执行的文件路径或命令

* @param type 执行类型 1 shell命令 2 .CMD文件 3 .EXE文件

* @return 返回的值

* @throws IOException

*/

public static String execCMD(String path, int type) throws IOException {

final String COM_TITLE = "CMD /C ";

if (type == 1) {

path = COM_TITLE + path;

}

Process pro = Runtime.getRuntime().exec(path);

BufferedInputStream br = new BufferedInputStream(pro.getInputStream());

BufferedInputStream br1 = new BufferedInputStream(pro.getErrorStream());

int ch;

StringBuffer text = new StringBuffer("获得的信息是: \n");

while ((ch = br.read()) != -1) {

text.append((char) ch);

}

StringBuffer text1 = new StringBuffer("获得的错误信息是: \n");

while ((ch = br1.read()) != -1) {

text1.append((char) ch);

}

return text.length() > 9 ? text.toString() : text1.toString();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: