最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java執(zhí)行.bat文件的四種高效方法

 更新時(shí)間:2025年08月21日 10:02:43   作者:愛(ài)的嘆息  
在Windows操作系統(tǒng)中,.bat 文件是一種批處理腳本文件,它可以包含一系列命令,用于執(zhí)行特定的任務(wù),在Java開發(fā)中,.bat 文件通常用于簡(jiǎn)化Java程序的啟動(dòng)和執(zhí)行過(guò)程,本文給大家介紹了Java執(zhí)行.bat文件的四種高效方法,需要的朋友可以參考下

在 Java 中執(zhí)行 .bat 文件的方式主要有以下幾種:

一、使用 Runtime.getRuntime().exec()

這是最原始的 Java 執(zhí)行外部命令的方式。

Maven 依賴(無(wú)需額外依賴)

<!-- 標(biāo)準(zhǔn) Java API,無(wú)需引入額外依賴 -->

示例代碼

public class BatExecutor {
    public static void main(String[] args) {
        try {
            Process process = Runtime.getRuntime().exec("cmd /c start cmd.exe /c your-script.bat");
            int exitCode = process.waitFor();
            System.out.println("Exit Code: " + exitCode);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

二、使用 ProcessBuilder

更現(xiàn)代和推薦的方式,支持設(shè)置環(huán)境變量、工作目錄等。

Maven 依賴(無(wú)需額外依賴)

<!-- 標(biāo)準(zhǔn) Java API,無(wú)需引入額外依賴 -->

示例代碼

import java.io.IOException;

public class BatWithProcessBuilder {
    public static void main(String[] args) {
        try {
            ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/c", "your-script.bat");
            pb.redirectErrorStream(true); // 合并標(biāo)準(zhǔn)輸出與錯(cuò)誤輸出
            Process process = pb.start();

            int exitCode = process.waitFor();
            System.out.println("Exit Code: " + exitCode);
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

三、使用 Apache Commons Exec(第三方庫(kù))

提供了更高級(jí)的 API 來(lái)處理執(zhí)行過(guò)程中的輸入/輸出流、超時(shí)、退出碼驗(yàn)證等。

Maven 依賴

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-exec</artifactId>
    <version>1.3</version>
</dependency>

示例代碼

import org.apache.commons.exec.*;

import java.io.IOException;

public class BatWithApacheExec {
    public static void main(String[] args) {
        CommandLine cmdLine = new CommandLine("cmd");
        cmdLine.addArgument("/c");
        cmdLine.addArgument("your-script.bat");

        DefaultExecutor executor = new DefaultExecutor();
        executor.setExitValue(0);

        PumpStreamHandler streamHandler = new PumpStreamHandler(System.out, System.err);
        executor.setStreamHandler(streamHandler);

        try {
            int exitCode = executor.execute(cmdLine);
            System.out.println("Exit Code: " + exitCode);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

四、使用 ProcessHandle(Java 9+)

適用于需要獲取子進(jìn)程 PID 或監(jiān)聽進(jìn)程狀態(tài)的場(chǎng)景。

Maven 依賴(無(wú)需額外依賴)

<!-- 標(biāo)準(zhǔn) Java API,無(wú)需引入額外依賴 -->

示例代碼

import java.io.IOException;

public class BatWithProcessHandle {
    public static void main(String[] args) {
        try {
            ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/c", "your-script.bat");
            Process process = pb.start();

            ProcessHandle handle = process.toHandle();
            System.out.println("Process PID: " + handle.pid());

            boolean finished = handle.onExit().toCompletableFuture().isDone();
            if (finished) {
                System.out.println("Process exited.");
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

總結(jié)對(duì)比

方法是否需要依賴控制能力推薦程度
Runtime.exec()? 不需要基礎(chǔ)??☆☆☆
ProcessBuilder? 不需要????☆
Apache Commons Exec? 需要非常高?????
ProcessHandle (Java 9+)? 不需要特定用途???☆☆

你可以根據(jù)項(xiàng)目需求選擇合適的方式。如果需要健壯的流程控制和異常處理,推薦使用 Apache Commons Exec

到此這篇關(guān)于Java執(zhí)行.bat文件的四種高效方法的文章就介紹到這了,更多相關(guān)Java執(zhí)行.bat文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java實(shí)現(xiàn)的對(duì)稱加密算法3DES定義與用法示例

    Java實(shí)現(xiàn)的對(duì)稱加密算法3DES定義與用法示例

    這篇文章主要介紹了Java實(shí)現(xiàn)的對(duì)稱加密算法3DES定義與用法,結(jié)合實(shí)例形式簡(jiǎn)單分析了Java 3DES加密算法的相關(guān)定義與使用技巧,需要的朋友可以參考下
    2018-04-04
  • Java 生成隨機(jī)驗(yàn)證碼圖片的示例

    Java 生成隨機(jī)驗(yàn)證碼圖片的示例

    這篇文章主要介紹了Java 生成隨機(jī)驗(yàn)證碼圖片的示例,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-10-10
  • Java斷點(diǎn)續(xù)傳(文件分塊)完整實(shí)現(xiàn)步驟

    Java斷點(diǎn)續(xù)傳(文件分塊)完整實(shí)現(xiàn)步驟

    這篇文章主要介紹了Java斷點(diǎn)續(xù)傳(文件分塊)完整實(shí)現(xiàn)步驟,?斷點(diǎn)續(xù)傳通過(guò)分塊傳輸大文件,中斷后可續(xù)傳未完成部分,服務(wù)端合并分塊,避免重復(fù)上傳,提升用戶體驗(yàn)并節(jié)省網(wǎng)絡(luò)資源,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-05-05
  • 一文詳解SpringBoot如何切換Redis的DB

    一文詳解SpringBoot如何切換Redis的DB

    這篇文章主要為大家詳細(xì)介紹了Spring Redis動(dòng)態(tài)切換數(shù)據(jù)庫(kù)的核心機(jī)制,并指出僅調(diào)用setDatabase()和resetConnection()無(wú)法真正切換數(shù)據(jù)庫(kù)的根本原因,感興趣的小伙伴可以了解下
    2025-12-12
  • Java 多線程實(shí)例講解(一)

    Java 多線程實(shí)例講解(一)

    本文主要介紹Java 多線程的知識(shí),這里整理了詳細(xì)的資料及簡(jiǎn)單示例代碼有需要的小伙伴可以參考下
    2016-09-09
  • 將15位身份證補(bǔ)全為18位身份證的算法示例詳解

    將15位身份證補(bǔ)全為18位身份證的算法示例詳解

    這篇文章主要給大家介紹了關(guān)于將15位身份證補(bǔ)全為18位身份證算法的相關(guān)資料,文中通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來(lái)學(xué)習(xí)學(xué)習(xí)吧。
    2017-06-06
  • Springboot使用ResponseBody漢字返回問(wèn)號(hào)問(wèn)題

    Springboot使用ResponseBody漢字返回問(wèn)號(hào)問(wèn)題

    這篇文章主要介紹了Springboot使用ResponseBody漢字返回問(wèn)號(hào)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Java AWT中常用的三種布局管理器詳解

    Java AWT中常用的三種布局管理器詳解

    這篇文章主要介紹了Java AWT中常用的三種布局管理器詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 探討Java語(yǔ)言中那些修飾符

    探討Java語(yǔ)言中那些修飾符

    在java中常見(jiàn)的修飾符有:abstract(抽象的)、static(靜態(tài)的)、public(公共的)、protected(受保護(hù)的)、private(私有的)、synchronized(同步的)、native(本地的)、transient(暫時(shí)的)、volatile(易失的)、final(不可改變的)。對(duì)java語(yǔ)言修飾符感興趣的朋友一起看看吧
    2016-11-11
  • SpringBoot中MyBatis-Plus 查詢時(shí)排除某些字段的操作方法

    SpringBoot中MyBatis-Plus 查詢時(shí)排除某些字段的操作方法

    這篇文章主要介紹了SpringBoot中MyBatis-Plus 查詢時(shí)排除某些字段的操作方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08

最新評(píng)論

海阳市| 石城县| 广德县| 平南县| 镇原县| 韶关市| 南京市| 沙坪坝区| 鄂托克前旗| 什邡市| 疏附县| 封开县| 白山市| 祁连县| 泾阳县| 石狮市| 巴中市| 阳朔县| 逊克县| 博湖县| 张家口市| 钦州市| 迭部县| 汉沽区| 班戈县| 怀集县| 五寨县| 仁布县| 佳木斯市| 兴业县| 灯塔市| 勃利县| 马鞍山市| 马公市| 得荣县| 昌平区| 锦屏县| 财经| 瑞金市| 沾益县| 苏尼特右旗|