怎么在java里打开bat文件,并打开cmd窗口执行,举例一个完整代码。

比如我的执行D:/abc.bat文件,并弹出dos窗口。就像双击D般下面abc.bat文件一样的效果。下面这样写只能启动exe程序,bat弹不出窗口来,但程序也没有停止。... 比如我的执行D:/abc.bat文件,并弹出dos窗口。就像双击D般下面abc.bat文件一样的效果。
下面这样写只能启动exe程序,bat弹不出窗口来,但程序也没有停止。
public class MyTest {

public static void mm(){
Runtime run= Runtime.getRuntime();
try
{
run.exec("D:/abc.bat");//添加程序路径
}catch(Exception e)
{
e.printStackTrace();
}
}

public static void main(String[] aegs){
mm();
}
}
展开
 我来答
yugi111
2013-09-09 · TA获得超过8.1万个赞
知道大有可为答主
回答量:5.1万
采纳率:70%
帮助的人:1.3亿
展开全部

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.LinkedList;
public class Command {
 private java.lang.Process p; 
 private InputStream is;
 private OutputStream os;
 private BufferedWriter bw;
 private BufferedReader br;
 private ProcessBuilder pb;
 private InputStream stdErr;
 public Command() {
 }
 //获取Process的输入,输出流
 public void setCmd(String cmd) {
  try {
   p = Runtime.getRuntime().exec(cmd);
   os = p.getOutputStream();
   is = p.getInputStream();
   stdErr = p.getErrorStream();
  } catch (IOException e) {
   System.err.println(e.getMessage());
  }
 }
 //向Process输出命令
 public void writeCmd(String cmd) {
  try {
   bw = new BufferedWriter(new OutputStreamWriter(os));
   bw.write(cmd);
   bw.newLine();
   bw.flush();
   bw.close();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
 //读出Process执行的结果
 public String readCmd() {
  StringBuffer sb = new StringBuffer();
  br = new BufferedReader(new InputStreamReader(is));
  String buffer = null;
  try {
   while ((buffer = br.readLine()) != null) {
    sb.append(buffer + "\n");
   }
   System.out.println(p.waitFor());
  } catch (Exception e) {
   e.printStackTrace();
  }
  return sb.toString();
 }
 //将命令一股脑塞入list中
 public LinkedList<String> doCmd(LinkedList<String> lists) {
  LinkedList<String> list = new LinkedList<String>();
  for (String s : lists) {
   writeCmd(s);
   list.add(readCmd());
  }
  return list;
 }
 public static void main(String[] args) {
  Command cmd = new Command();
  cmd.setCmd("cmd");
  cmd.writeCmd("copy d:\\stock.xml d:\\backStock.xml");
  System.out.println(cmd.readCmd());
  //LinkedList<String> list = new LinkedList<String>();
  //list.add("dir/b");
  //list = cmd.doCmd(list);
  // for(String s:list){
  // System.out.print(s);
  // }
 }
}
更多追问追答
追问
就像双击D般下面abc.bat文件一样的效果。按你的回答做了,没有弹出dos窗口。
下面这样写只能启动exe程序:
Runtime run= Runtime.getRuntime();
try
{ run.exec("D:/abc.bat");//添加程序路径
}catch(Exception e)
{ e.printStackTrace();
}
追答
是的,只能执行执行程序

我的代码可以执行bat文件

public static void main(String[] args) {
  Command cmd = new Command();
  cmd.setCmd("cmd");
  cmd.writeCmd("d:\\abc.bat");
  System.out.println(cmd.readCmd());
 }
百度网友7c4983280
2013-09-09 · TA获得超过182个赞
知道小有建树答主
回答量:130
采纳率:100%
帮助的人:73.1万
展开全部
	public static void main(String[] args) throws IOException {
Desktop.getDesktop().open(new File("d:/abc.bat"));
}
追问
谢谢,成功了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式