timeout命令在批处理文件中不起作用

pdg*_*pdg 2 java batch-file

我试图通过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则执行命令以强制等待.