我试图通过tomcat应用程序调用批处理文件.批处理正确执行,但批处理中的超时命令不会暂停批处理.直接执行批处理时,超时会按预期暂停进程.
我正在调用批处理:Runtime.getRuntime().exec("test.bat");
MC *_* ND 10
当您调用Runtime.getRuntime().exec()
已启动进程的输入和输出流时,将重定向.timeout
从这个进程启动继承相同的句柄.
问题是timeout
尝试访问控制台,这是因为重定向而无法做到的.
您可以从控制台测试此行为
<nul timeout /t 10
Run Code Online (Sandbox Code Playgroud)
当输入流被重定向时,timeout
失败.
一种解决方法可能是
( timeout /t 10 || >nul ping -n 11 localhost ) 2>nul
Run Code Online (Sandbox Code Playgroud)
如果timeout
失败,ping
则执行命令以强制等待.