2
我想通过tomcat应用程序调用批处理文件。批处理执行正确,但批处理中的超时命令不会暂停批处理。当直接执行批处理时,超时会按预期暂停进程。timeout命令不能在批处理文件中工作
我正在调用批处理: Runtime.getRuntime()。exec(“test.bat”);
我想通过tomcat应用程序调用批处理文件。批处理执行正确,但批处理中的超时命令不会暂停批处理。当直接执行批处理时,超时会按预期暂停进程。timeout命令不能在批处理文件中工作
我正在调用批处理: Runtime.getRuntime()。exec(“test.bat”);
当您调用Runtime.getRuntime().exec()
时,启动进程的输入和输出流将被重定向。从此进程启动的timeout
将继承相同的句柄。
问题是,timeout
tries to get access to the console,它不能做的事情,因为重定向。
您可以测试这种行为从一个控制台
<nul timeout /t 10
当输入流重定向,timeout
失败运行。
一个解决办法可能是
(timeout /t 10 || >nul ping -n 11 localhost) 2>nul
如果timeout
失败,ping
命令被执行强制等待。
您是否使用**/NOBREAK **选项运行了** TIMEOUT **。这将排除如果有某种持续的交互有效地按下某个键。 – Compo