《Java使用ProcessBuilder类创建进程调用CMD命令--使用getOutoutStream连续输入命令》

该博客介绍了如何在Java中连续执行多条CMD命令,避免使用`&`拼接。通过创建`ProcessBuilder`,启动CMD进程,然后利用`getOutputStream()`写出命令,如改变目录和创建文件夹。每条命令后添加` `以执行,并确保在写入后刷新和关闭流。同时,展示了如何捕获并打印CMD的输出结果。
摘要由CSDN通过智能技术生成

前言: 在使用Java调用CMD命令的时候,有需求是连续输入多条CMD命令,网上查都是使用&拼接命令,但是在一次执行后,如果后续还要在上面的CMD进程中执行命令怎么解决?可以使用Process的getOutputStream()用流的形式写入命令

    public static void main(String[] args){
        ProcessBuilder pb = null;
    	// 创建进程实例,用来启动cmd
        pb = new ProcessBuilder("cmd.exe");
        // 设置文件的工作目录,根据自己的需求设置
        pb.directory(new File("C://Users//86182"));
        // 启动进程,一个start会开启一个进程
        Process p = pb.start();
        // 创建字符缓冲输出流,getOutputStream是得到进程的写入流
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));
        // 第一条CMD命令,cd到桌面,最关键得是\n一定要写,注意不要写成/n,不然命令不会被执行,会打印出More?
        bw.write("cd C:/Users/86182//Desktop \n");
        // 第二条命令,创建文件夹。举一反一,有多少条命令,这样写入刷新关闭就可以,不需要用&拼接。
        // 后续可以拿到这个流继续向这个进程写入命令
        bw.write("md Myfile \n");
        // 刷新流,写入后一定要刷新
        bw.flush();
        // 关闭流,注意一定要关闭,不然会阻塞
		bw.close();
		// 下面是获取输出并打印
        InputStream is = p.getInputStream();
        InputStreamReader isr = new InputStreamReader(is, "GBK");
        BufferedReader br = new BufferedReader(isr);
        String line;
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
    }
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值