簡體   English   中英

從運行時環境中運行批處理文件

[英]Run batch file from within runtime environment

是否可以在Windows下運行批處理文件,就好像它是從運行java實例的相同shell運行(而不是在新的控制台實例中 )?

我想運行一個由第三方提供的批處理文件並有條件地設置一堆環境變量,我寧願不必將其轉換為Java,但是Java應用程序中的某些東西需要工作。

我知道另一種方法是在運行Jar之前在命令提示符中手動運行批處理文件以獲得相同的效果,但在這種情況下需要大量輸入或大量自定義批處理文件。

簡答:不。

當你聲明“從運行java實例的同一個shell運行”時,你似乎建議shell和java在某個公共/共享級別共存。 相反,它們的關系是分層的:shell是一個父進程,它將java作為子進程啟動。

進程對環境所做的任何更改(例如批處理)都是:

  • 對該過程可見,並且
  • 對子進程可見,但是
  • 從來沒有父進程。

批處理文件從命令提示符執行時,導致立即更改當前環境的原因是命令shell(cmd.exe)旨在“就地”處理批處理文件 - 無需啟動新進程[在unix下, shell將“源”一個腳本文件做同樣的事情]。

Java,而不是“cmd.exe”,不會這樣做。 正如您所指出的,從java運行批處理文件將創建一個新的命令處理器作為子進程,該進程在完成時對java環境沒有影響。

選項包括:

  1. 寫一個批處理文件
    • 然后調用您的其他批處理文件
    • 啟動你的java進程,或者
  2. 通過java程序解析批處理文件。 如果您“強制要求”“批處理文件”的唯一有效內容是“X = Y”形式的簡單賦值語句,那么這並不太難 - 您實際上可能將其作為屬性文件加載。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM