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

下面是完整攻略:

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日

相关文章

  • JavaScript之BOM+DOM

    JavaScript之BOM+DOM 什么是BOM? BOM(Browser Object Model),即浏览器对象模型,它提供了一组与浏览器交互的对象和方法,可以用来实现浏览器的基本操作。BOM的核心是window对象,window对象是全局对象,它包含了许多属性和方法,如setTimeout和setInterval等。 BOM的常用属性和方法 1. 弹…

    其他 2023年3月28日
    00
  • Android 布局文件Layout XML属性

    当我们在开发Android应用时,布局文件是非常重要的一部分。布局文件使用XML语言编写,用于定义应用界面的结构和外观。在布局文件中,我们可以使用各种属性来控制视图的位置、大小、样式等。下面是Android布局文件中常用的一些属性的详细说明: android:layout_width和android:layout_height:这两个属性用于设置视图的宽度和…

    other 2023年8月21日
    00
  • 关于python:pipinstall-u中的”-u”选项代表什么

    下面是关于“关于python:pip install -u中的”-u”选项代表什么”的完整攻略: 1. 什么是pip install -u? pip install -u是pip install命令的选项,用于升级已安装的Python包。使用该选项时,pip会检查已安装的包的版本,并将其升级到最新版本。 2. 如何使用pip install -u? 使用pi…

    other 2023年5月7日
    00
  • .eslintrc配置目录及配置项的使用方式

    下面是针对“.eslintrc配置目录及配置项的使用方式”的完整攻略: 什么是.eslintrc配置文件? .eslintrc文件是ESLint配置文件,作用是告诉ESLint需要检查哪些规则,并对规则进行一些配置。 在项目中使用ESLint的时候,需要先安装ESLint,可以通过以下命令进行安装: npm install eslint –save-dev…

    other 2023年6月25日
    00
  • win10手机版build10070谍照曝光 推出通用办公应用程序

    win10手机版build10070谍照曝光 最近有消息爆出Win10手机版build10070的谍照已经曝光。按照此前的传闻,这款系统将会和Win10桌面版一样推出通用应用,包括通用办公应用程序。 Win10手机版build10070推出通用办公应用程序 Win10手机版build10070将会推出通用办公应用程序,这意味着用户可以在手机上使用和桌面版一样…

    other 2023年6月25日
    00
  • c#程序调用cmd执行命令(转)

    c#程序调用cmd执行命令(转) 在开发过程中,我们经常需要通过c#程序去调用操作系统的一些命令。在Windows系统中,CMD命令行界面是比较常用的一种方式。本文将介绍如何使用C#程序调用CMD执行命令。 方法一:使用Process类 Process类是C#程序中用于执行外部进程的一个类,也可以使用它来执行CMD命令。 示例代码: Process proc…

    其他 2023年3月29日
    00
  • Java 8 Stream流强大的原理

    Java 8 Stream流是一个非常强大的特性,它为Java程序员提供了一个非常便捷的方式来处理集合数据。Stream流是基于Lambda表达式和函数式编程的,它是一个可以组合操作的序列化数据流。它的执行过程分为中间操作和终端操作,中间操作返回一个新的Stream流,终端操作将返回一个非Stream的结果。在这篇攻略中,我们将详细讲解Stream流的原理和…

    other 2023年6月27日
    00
  • Java内部类的全限定名规律代码示例

    当我们在Java中定义了一个内部类时,它的全限定名是由外部类的全限定名和内部类的名称组成的,中间使用一个美元符号”$”分隔。下面是关于Java内部类全限定名规律的详细攻略,包含两个示例说明。 示例1:成员内部类的全限定名 // 外部类 package com.example; public class OuterClass { // 成员内部类 public…

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