我已就如何实现这一目标提出了几个问题。
我使用了process.waitFor()
和/wait
here。问题是通过这样做,它不仅等待命令执行,而且直到cmd提示被关闭(可以通过在bat文件中添加exit
来完成)。但是我不能将bat文件修改为Product文件。
Runtime run = Runtime.getRuntime();
try {
String path = "C:/Folder/c.bat";
String executeCmd= "cmd /c start /wait "+path;
final Process process =run.exec(executeCmd);
process.waitFor();
System.out.println("did I wait?");
} catch (Exception e) {
e.printStackTrace();
}
如何让它等到命令执行完毕。
答案 0 :(得分:0)
您可以使用以下内容创建帮助程序批处理文件:
start /wait %1\c.bat
exit
将此帮助程序批处理存储在您想要的任何位置。
然后启动此助手批处理文件,其路径为c.bat
作为参数。
Runtime run = Runtime.getRuntime();
try {
String pathToCBatch = "C:\\Folder\\";
String pathToHelperBatch = "c:/helperBatch.bat";
String executeCmd = "cmd /c start /wait " + pathToHelperBatch + " " + pathToCBatch;
final Process process = run.exec(executeCmd);
System.out.println(System.currentTimeMillis());
process.waitFor();
System.out.println(System.currentTimeMillis());
} catch (Exception e) {
e.printStackTrace();
}
答案 1 :(得分:0)
我也有同样的问题:“调用批处理文件并等到它完成”( Windows PC )。这个解决方案对我有用:
StringBuilder command = new StringBuilder("cmd /c start /wait C:\\script.bat");
// my script take 2 file as arguments
command.append(" ").append(inputFile);
command.append(" ").append(outputFile);
try {
final Process p = Runtime.getRuntime().exec(command.toString());
p.waitFor();
} catch (InterruptedException e) {
System.out.println(e);
}