Java调用windows系统的CMD命令并启动新程序

yizhihongxing

下面是完整攻略:

1. 通过Runtime.getRuntime().exec()方法调用CMD命令

Java可以通过对Runtime.getRuntime().exec()方法的调用来启动CMD命令,并通过输入输出流来与CMD命令进行交互。具体步骤如下:

  • 创建一个Process对象,通过执行CMD命令来启动新程序。
  • 通过Process对象的getInputStream()方法来获取CMD命令的输出流,并通过读取输出流来获取CMD命令输出的结果。
  • 通过Process对象的getErrorStream()方法来获取CMD命令的错误输出流,并通过读取错误输出流来获取CMD命令可能输出的错误信息。
  • 通过Process对象的waitFor()方法等待CMD命令执行完成。

下面给出一个简单的示例,该示例通过调用CMD命令打开记事本:

try {
    // 执行CMD命令启动记事本
    Process process = Runtime.getRuntime().exec("cmd /c start notepad");
    BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream()));
    String line;
    while ((line = input.readLine()) != null) {
        System.out.println(line);
    }
    input.close();
    // 等待CMD命令执行完成
    process.waitFor();
} catch (IOException | InterruptedException e) {
    e.printStackTrace();
}

2. 通过ProcessBuilder.start()方法调用CMD命令

与上一个示例相比,另一种调用CMD命令的方法是通过ProcessBuilder.start()方法来创建一个Process对象。ProcessBuilder提供了更多的灵活性,例如在执行CMD命令时指定工作目录、环境变量、命令参数等。具体步骤如下:

  • 创建一个ProcessBuilder对象,并设置CMD命令及其参数、工作目录、环境变量等。
  • 调用ProcessBuilder.start()方法来启动新程序。
  • 通过Process对象的getInputStream()、getErrorStream()和waitFor()方法来与CMD命令进行交互。

下面给出一个示例,该示例通过ProcessBuilder调用CMD命令打开一个文件:

String filePath = "C:\\my_folder\\my_file.txt";
ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "start", "\"\"", filePath);
pb.directory(new File("C:\\my_folder"));
Process process = pb.start();
// 这里可以读取CMD命令的输出流和错误输出流
// 等待CMD命令执行完成
process.waitFor();

在本示例中,ProcessBuilder指定了CMD命令及其参数(开启新窗口并打开指定文件),并将工作目录设置为C:\my_folder;CMD命令会在该目录下执行。另外,注意到filePath是被双引号括起来的,这是因为文件路径中可能存在空格,双引号能够保证CMD命令正确解析文件路径。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java调用windows系统的CMD命令并启动新程序 - Python技术站

(0)
上一篇 2023年6月26日
下一篇 2023年6月26日

相关文章

  • Win11截图工具“此应用程序无法打开”怎么办?(附解决方法)

    针对“Win11截图工具“此应用程序无法打开”的问题,以下是详细的攻略,具体步骤如下: 问题描述 用户在使用Win11截图工具时,可能会遇到某些无法打开的情况,系统会提示:“此应用程序无法打开”。 解决方法 方法一:检查系统更新 第一种方法是检查系统更新,因为Win11截图工具是Win11系统中自带的工具,如果系统存在严重的问题就会影响其正常运行。以下是操作…

    other 2023年6月25日
    00
  • 一份ASP内存的释放的实验报告

    一份ASP内存的释放的实验报告攻略 简介 本实验旨在研究ASP(Active Server Pages)内存的释放机制,并探索如何有效地释放ASP内存以提高系统性能。本攻略将详细介绍实验的步骤和示例说明。 实验步骤 步骤一:创建ASP页面 创建一个简单的ASP页面,例如test.asp。 在test.asp中添加一些占用内存的代码,例如创建大型数组或加载大型…

    other 2023年8月2日
    00
  • 6招为智能abc输入法提速 输入大写金额再也不用愁啦

    6招为智能ABC输入法提速 输入大写金额再也不用愁啦 简介 智能ABC输入法是一款智能化的输入法工具,可以帮助用户快速输入大写金额。本攻略将介绍6个技巧,帮助您更高效地使用智能ABC输入法。 技巧一:使用快捷短语 智能ABC输入法支持设置快捷短语,可以将常用的大写金额词组设置为快捷短语,以便快速输入。例如,您可以将\”一百元\”设置为快捷短语\”100元\”…

    other 2023年8月18日
    00
  • spanwidth无效

    以下是“spanwidth无效”的完整攻略: spanwidth无效 在HTML和CSS中,spanwidth是一种用于设置表格单元格宽度的属性。但是某些情况下,spanwidth可能会无效。本攻略将介绍spanwidth无效的原因和解决方法。 spanwidth无效的因 spanwidth无效的原因可能有以下几种: 单元格中的内容过宽:如果单元格中的内容过…

    other 2023年5月7日
    00
  • qq天降红包虚拟定位怎么修改?苹果手机QQ天降红包虚拟定位破解攻略

    下面是对“qq天降红包虚拟定位怎么修改?苹果手机QQ天降红包虚拟定位破解攻略”的完整攻略。 一、什么是qq天降红包虚拟定位? QQ天降红包是QQ软件中的一项活动,可以在活动页面领取红包,但领取红包需要在活动范围内。因此,通过虚拟定位工具可以更改定位,达到领取红包的目的。 二、如何修改qq天降红包虚拟定位? 方法一:使用第三方软件 1.在应用商店搜索“虚拟定位…

    other 2023年6月27日
    00
  • MySQL8.0.21.0社区版安装教程(图文详解)

    MySQL 8.0.21.0社区版安装教程(图文详解) MySQL是一款流行的开源关系型数据库管理系统,它被广泛用于Web应用程序的开发和管理。在本篇文章中,我们将介绍MySQL 8.0.21.0社区版的安装过程,并提供图文详解。 下载MySQL 8.0.21.0社区版 首先,我们需要下载MySQL 8.0.21.0社区版,可以在MySQL官网(https:…

    other 2023年6月27日
    00
  • 解决vuex刷新状态初始化的方法实现

    下面就详细讲解一下“解决vuex刷新状态初始化的方法实现”的完整攻略: 1. 问题描述 在使用vuex管理状态时,由于状态信息存在于缓存中,页面刷新后状态依然存在,但是用户信息等无法从缓存中获取,因此需要对状态信息进行初始化操作。 2. 解决方法 2.1 在页面加载时初始化状态 在代码中的created生命周期中,在actions中调用函数初始化所需的状态信…

    other 2023年6月20日
    00
  • 微信小程序下载工具及调试详解

    微信小程序下载工具及调试详解 介绍 微信小程序是一种基于微信平台的应用程序,它可以在微信中直接使用,并且不需要下载和安装。微信小程序通过JavaScript和WXML开发语言搭建,支持访问微信API、数据存储、云服务等功能。为了方便开发者调试和测试小程序,微信提供了小程序下载工具及调试功能。 下载工具 微信小程序下载工具是微信官方提供的一款方便小程序开发者调…

    other 2023年6月26日
    00
合作推广
合作推广
分享本页
返回顶部