我遇到一种情况,我有一个批处理脚本,我需要从Java中抽壳并调用。这一切都很好,也很好,也很容易,但是我遇到的问题是,我似乎无法以任何实际兑现任何waitfor,timeout或pause command命令的方式来调用它。
我有这个批处理文件作为测试,它只是写入文件,等待10秒钟,然后再次写入文件并退出。
@echo off
@echo.>"testFile.txt"
@echo %time% "Script has started" >> "testFile.txt"
timeout /t 10 /nobreak
@echo %time% "Script has ended" >> "testFile.txt"
这完全可以从命令行运行时按预期方式工作,并且我得到一个文件,其中包含两条消息,相隔10秒,如下所示:
11:24:52.01 "Script has started"
11:25:02.11 "Script has ended"
使用此Java代码运行完全相同的脚本时:
final String command = "cmd.exe /c start /b <path to bat file>\run-test.bat";
Runtime.getRuntime().exec(command);
我得到一个输出文件,其中两行日志仅相距毫秒,如下所示:
11:32:18.85 "Script has started"
11:32:18.89 "Script has ended"
对于我尝试过的所有批处理文件中的waitFor和pause命令,这都是相同的行为。是否有人对如何执行这些命令有任何建议,或者对为什么不执行这些命令有任何见解?
谢谢