运行.bat文件的Java问题

时间:2009-07-30 19:38:54

标签: java batch-file

我正在尝试从Java应用程序运行两个bat文件。我正在使用:

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

} //结束方法

bat文件调用另一个bat文件。它似乎永远不会退出并将控制返回到原始bat文件。

来自1.bat

set zzname=%1
zzlookup.bat %zzname%

另一个bat文件运行一些命令,然后应该退出。我是否需要对运行时部分做一些特别的事情?

提前致谢, 达斯汀

3 个答案:

答案 0 :(得分:4)

除了上面的建议,我不认为Runtime.exec允许直接运行.bat文件。首先尝试使用“cmd \ c”为命令添加前缀。

请参阅http://ant.apache.org/manual/Tasks/exec.html

答案 1 :(得分: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

答案 2 :(得分:1)

如果批处理文件生成输出,则需要排空表示标准和错误输出的流。

已有工作示例here