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

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

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

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

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

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

Maven 依賴(無需額外依賴)

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

示例代碼

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 依賴(無需額外依賴)

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

示例代碼

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(第三方庫)

提供了更高級(jí)的 API 來處理執(zhí)行過程中的輸入/輸出流、超時(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 依賴(無需額外依賴)

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

示例代碼

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ù)傳通過分塊傳輸大文件,中斷后可續(xù)傳未完成部分,服務(wù)端合并分塊,避免重復(fù)上傳,提升用戶體驗(yàn)并節(jié)省網(wǎng)絡(luò)資源,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-05-05
  • 一文詳解SpringBoot如何切換Redis的DB

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

    這篇文章主要為大家詳細(xì)介紹了Spring Redis動(dòng)態(tài)切換數(shù)據(jù)庫的核心機(jī)制,并指出僅調(diào)用setDatabase()和resetConnection()無法真正切換數(shù)據(jù)庫的根本原因,感興趣的小伙伴可以了解下
    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)資料,文中通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧。
    2017-06-06
  • Springboot使用ResponseBody漢字返回問號(hào)問題

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

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

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

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

    探討Java語言中那些修飾符

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

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

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

最新評(píng)論

上虞市| 逊克县| 行唐县| 县级市| 云霄县| 乌海市| 寿宁县| 德江县| 孝义市| 夏津县| 军事| 五华县| 井陉县| 芜湖县| 峨眉山市| 册亨县| 灵石县| 额济纳旗| 渑池县| 钦州市| 隆回县| 衢州市| 岳池县| 大渡口区| 拉萨市| 射洪县| 大庆市| 射阳县| 江山市| 商南县| 威信县| 巴塘县| 林甸县| 淳化县| 澄江县| 安阳县| 和林格尔县| 利川市| 贵南县| 文成县| 聂拉木县|