![](/img/trans.png)
[英]When executing batch file from Java Runtime, native DOS commands fail to run
[英]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環境沒有影響。
選項包括:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.