在Java中运行批处理文件

时间:2015-12-23 22:48:32

标签: java batch-file processbuilder

我正在使用流程构建器来运行批处理文件,我正在尝试在每个批处理文件完成后获取进度条和textarea以进行更新。

问题是,进度条和文本区域在所有三个批处理文件完全完成后才会更新,然后它只显示进度条和文本区域的最后一次更新(我猜它是全部完成的)立刻和最后一个progressbar.setValue over骑前面的值)

这是运行三个批处理文件之一的方法之一:

public void runBatch1() {
    try {
        ProcessBuilder builder = new ProcessBuilder("cmd.exe", "/c", "cd \"C:\\batchfiles\" && batch1.bat");
        builder.redirectErrorStream(true);
        Process p = builder.start();
        BufferedReader r = new BufferedReader(new InputSteamReader(p.getInputStream()));
        String line;
        while (true) {
            line = r.readLine();
            if (line == null) {
                break;
            }
            System.out.println(line);
            jTextArea1.setText("Batch one finished.");
            jProgressBar1.setValue(33);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

1 个答案:

答案 0 :(得分:1)

我认为您可能只需要切换到事件派发线程: progressbar in a thread does not update its UI until the work was done in the main thread