怎么在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();
}
} 展开
下面这样写只能启动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();
}
} 展开
2个回答
展开全部
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());
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询