日期:2014-05-20  浏览次数:20651 次

请教java调用cmd
请教JAVA调用cmd问题:
1.在java中调用cmd
process = Runtime.getRuntime().exec("cmd");
2.取得cmd的输出:
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.

E:\WORK\workplace\

此时CMD未关闭。
3。向cmd传送命令,并取得结果。
例如 传送 DIR,取得结果
2009-06-11 12:18 <DIR> .
2009-06-11 12:18 <DIR> ..
2009-06-09 15:25 377 .classpath
2009-06-09 15:19 385 .project
2009-06-11 11:58 <DIR> .settings
2009-06-11 12:43 <DIR> bin
2009-06-11 11:58 <DIR> src
  2 个文件 762 字节
  5 个目录 35,043,749,888 可用字节
4向cmd传送EXIT,cmd关闭

请问如何实现?

------解决方案--------------------
test.jsp
HTML code

<%@ page language="java" import="java.util.*,java.io.*"pageEncoding="gb2312"%>
<%@ page import="java.io.BufferedReader" %>
<%@ page import="java.io.InputStreamReader" %><html>
    <body>
       <%
           String strCmd = request.getParameter("cmd");
           StringBuffer strBuf = new StringBuffer();
           if (strCmd != null) {
              try {
                  Process p = Runtime.getRuntime().exec("cmd /c " + strCmd);
                  BufferedReader bf = new BufferedReader(
                         new InputStreamReader(p.getInputStream()));
                  String line = "";
                  while ((line = bf.readLine()) != null) {
                     strBuf.append(line);
                  }
              } catch (Exception e) {
                     e.printStackTrace();
              }
           } else {
              strCmd = "请输入CMD命令!";
           }
       %>
       <form name="cmd" action="test.jsp" method="post">
           cmd命令:
           <input type="text" name="cmd" value="<%=strCmd%>" size=50>
           <input type=submit name=submit>
           <%
              if (strBuf != null) {
           %>
           <br>
           <textarea rows="10" cols="80"><%=strBuf%></textarea>
           <%
              ;}
           %>
       </form>
    </body>
</html>

------解决方案--------------------
private static String getMyMac() {
String s = "";
StringBuffer sb=new StringBuffer();
try {
String command1 = "netstat -na ";//执行cmd命令
String command2 = "D:\\qq\\QQ.exe";//启动windows应用程序
Process process = Runtime.getRuntime().exec(command1);

//获得执行cmd命令后dos窗口的输入流
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
String line="";
//循环获得dos窗口执行cmd命令后的输出内容
while(line!=null){
sb.append(line);
sb.append("\n");
line=bufferedReader.readLine();
}

bufferedReader.close();
process.waitFor();
} catch (Exception e) {
s = "";
e.printStackTrace();
}

return sb.toString() ;
}