2016-09-17 79 views
2

我想通过tomcat应用程序调用批处理文件。批处理执行正确,但批处理中的超时命令不会暂停批处理。当直接执行批处理时,超时会按预期暂停进程。timeout命令不能在批处理文件中工作

我正在调用批处理: Runtime.getRuntime()。exec(“test.bat”);

+0

您是否使用**/NOBREAK **选项运行了** TIMEOUT **。这将排除如果有某种持续的交互有效地按下某个键。 – Compo

回答

8

当您调用Runtime.getRuntime().exec()时,启动进程的输入和输出流将被重定向。从此进程启动的timeout将继承相同的句柄。

问题是,timeouttries to get access to the console,它不能做的事情,因为重定向。

您可以测试这种行为从一个控制台

<nul timeout /t 10 

当输入流重定向,timeout失败运行。

一个解决办法可能是

(timeout /t 10 || >nul ping -n 11 localhost) 2>nul 

如果timeout失败,ping命令被执行强制等待。

相关问题