在Windows上从Java执行批处理脚本以等待

时间:2018-07-25 16:35:32

标签: java windows batch-file

我遇到一种情况,我有一个批处理脚本,我需要从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命令,这都是相同的行为。是否有人对如何执行这些命令有任何建议,或者对为什么不执行这些命令有任何见解?

谢谢

0 个答案:

没有答案