首页 > Java > java教程 > 如何从 Java 程序中运行 Shell 命令?

如何从 Java 程序中运行 Shell 命令?

Linda Hamilton
发布: 2024-12-18 10:50:11
原创
614 人浏览过

How Can I Run Shell Commands from within a Java Program?

从 Java 运行 Shell 命令:详细指南

在 Java 中,您可以使用 Runtime.exec() 方法执行系统命令。但是,了解如何执行命令可能具有挑战性。

打开命令提示符

您提供的代码正确打开命令提示符:

Runtime rt = Runtime.getRuntime();
rt.exec(new String[]{"cmd.exe","/c","start"});
登录后复制

这将打开一个新的命令提示符窗口。

正在执行命令

要在命令提示符下运行命令,您可以在执行之前将命令附加到命令行。例如,要更改目录并运行特定命令:

更改目录

// Change directory and run "dir" command
ProcessBuilder builder = new ProcessBuilder(
    "cmd.exe", "/c", "cd \"C:\Program Files\Flowella\" && dir");
登录后复制

上面的命令行告诉 cmd.exe 按顺序执行以下命令:

  1. 将当前目录更改为“C:Program FilesFlowella”
  2. 在该目录下运行“dir”命令

运行其他命令

可以通过修改命令来运行任何命令“cd”之后的行。例如,要运行“ping”命令:

ProcessBuilder builder = new ProcessBuilder(
    "cmd.exe", "/c", "cd \"C:\Program Files\Flowella\" && ping www.google.com");
登录后复制

使用 ProcessBuilder

ProcessBuilder 类提供了一种更通用的方法来执行命令。它允许您:

  • 重定向进程的标准错误和输出流
  • 设置环境变量
  • 设置工作目录

在上面的示例中,我们将进程的标准错误重定向到其标准输出,以简化读取

用法示例

以下代码在指定目录中执行“dir”命令:

import java.io.*;

public class CmdCommand {
    public static void main(String[] args) throws Exception {
        String dir = "C:\Program Files\Flowella";
        ProcessBuilder builder = new ProcessBuilder(
            "cmd.exe", "/c", "cd \"" + dir + "\" && dir");
        builder.redirectErrorStream(true);
        Process p = builder.start();
        BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line;
        while (true) {
            line = r.readLine();
            if (line == null) { break; }
            System.out.println(line);
        }
    }
}
登录后复制

此代码更改当前目录到“C:Program FilesFlowella”并执行“dir”命令,将输出打印到控制台。

以上是如何从 Java 程序中运行 Shell 命令?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板