2009-07-30 118 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