2009-07-30 119 views
2

我試圖從Java應用程序運行兩個bat文件。我使用的是:運行.bat文件的Java問題

try 
{ 
    Runtime rt = Runtime.getRuntime(); 
    Process proc = rt.exec(fullCommand); 
    InputStream stderr = proc.getErrorStream(); 
    InputStreamReader isr = new InputStreamReader(stderr); 
    BufferedReader br = new BufferedReader(isr); 

    int exitVal = proc.waitFor(); 
    System.out.println("Process exitValue: " + exitVal); 

    System.out.println("Working..."); 
} //End try 

catch (Throwable t) 
{ 
    t.printStackTrace(); 
} //End catch 

} // End方法

BAT文件調用另外一個bat文件。它似乎永遠不會退出並將控制權歸還給原始的bat文件。

從1.BAT

set zzname=%1 
zzlookup.bat %zzname% 

其他bat文件運行一些命令,然後應退出。我需要在運行時間部分做些特別的事嗎?

由於提前, 達斯汀

回答

3

從另一個調用一個批處理文件,仍然可以得到回原來的,否則你一旦需要

call zzlookup.bat %zzname% 

爲zzlookup.bat退出,過程中會停止。

例如:

withcall.bat

@echo Before 
@call other.bat 
@echo After 

direct.bat

@echo Before 
@other.bat 
@echo After 

other.bat

@echo Other 

輸出:

c:\Users\Jon\Test>withcall 
Before 
Other 
After 

c:\Users\Jon\Test>direct 
Before 
Other 
+0

我只是好奇,爲什麼DOS/Windows的想你*不*想回到原來的批處理文件 – 2009-07-30 20:03:33

+0

不知道 - 我的猜測是,它只是從一個錯誤* *長由於兼容性原因,現在無法修復。 – 2009-07-30 20:13:25

1

如果批處理文件生成輸出,則需要清除表示標準和錯誤輸出的流。

已經有工作示例here