首页 > Java > java教程 > 如何从 Java 程序中高效执行多个命令行命令?

如何从 Java 程序中高效执行多个命令行命令?

Susan Sarandon
发布: 2024-11-22 05:59:10
原创
660 人浏览过

How Can I Efficiently Execute Multiple Command Line Commands from a Java Program?

通过 Java 执行命令行命令

从 Java 程序执行外部命令对于自动化任务或访问系统功能非常有用。但是,如最初的问题所示,仅使用 Runtime.getRuntime().exec() 可能无法产生所需的行为,特别是在与 Windows 命令提示符交互时。

要解决此问题,需要使用更高级的方法需要方法。正如引用的帖子中所建议的,一种有效的解决方案包括重用一个进程来执行多个命令。以下代码举例说明了此技术:

String[] command = {"cmd"};
Process p = Runtime.getRuntime().exec(command);
new Thread(new SyncPipe(p.getErrorStream(), System.err)).start();
new Thread(new SyncPipe(p.getInputStream(), System.out)).start();
PrintWriter stdin = new PrintWriter(p.getOutputStream());
stdin.println("dir c:\ /A /Q");
// Add additional commands here
stdin.close();
int returnCode = p.waitFor();
System.out.println("Return code = " + returnCode);

class SyncPipe implements Runnable {
    public SyncPipe(InputStream istrm, OutputStream ostrm) {
        istrm_ = istrm;
        ostrm_ = ostrm;
    }

    public void run() {
        try {
            byte[] buffer = new byte[1024];
            int length;
            while ((length = istrm_.read(buffer)) != -1) {
                ostrm_.write(buffer, 0, length);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private final OutputStream ostrm_;
    private final InputStream istrm_;
}
登录后复制

说明:

  • 代码启动 cmd 进程,使其保持活动状态以便执行后续命令。
  • 创建两个线程来处理进程的输入输出流,保证实时性交互。
  • stdin 用于将命令“dir c: /A /Q”发送到命令提示符。
  • 进程执行此命令以及通过 stdin 发送的任何其他命令。
  • p.waitFor() 会阻塞,直到命令完成,确保在继续之前完成所有任务。
  • 检查返回码以指示成功或执行命令失败。

此方法允许在 Java 应用程序中在 Windows 命令提示符上以更具交互性的方式执行命令。

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

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