流程和exitcode

时间:2015-08-07 07:42:29

标签: java batch-file process exe processbuilder

我想从我的Java应用程序运行一个exe程序。我试试这个代码。 我运行批处理文件,批处理文件运行exe。

try {    
    String command = "C:\\tryfile\\Runprogram.bat";
    //  ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/c", command);
    ProcessBuilder pb = new ProcessBuilder(command);
    pb.redirectErrorStream(true);
    Process p = pb.start();

    InputStream is = p.getInputStream();
    InputStreamReader isr = new InputStreamReader(is);
    BufferedReader br = new BufferedReader(isr);
    String line;

    while ((line = br.readLine()) != null) {
        System.out.println(line);
    }

    int excode = p.waitFor();
    System.out.println(excode + " asfasf");

    p.destroy();    
} catch (Exception e) {
    e.printStackTrace();
}

exe运行良好并且做我想要的。(它使用bcp从csv文件插入数据库)。没有问题。

但是waitfor方法返回2147483647。 它是什么?我不知道它。我知道如果exe运行并完成没有任何错误,它会正常返回0。但是我的exe返回2147483647。

有什么想法吗?

我的bat文件在这里:

C:\ tryfile \ myprogram.exe

1 个答案:

答案 0 :(得分:2)

您将获得BAT的退出代码,而不是EXE的返回代码。但是你没有在BAT中指定一个退出代码,所以你得到了垃圾。

我手边没有窗框,但这样的东西应该可以使用

C:\tryfile\myprogram.exe
EXIT /B %ERRORLEVEL%

检查Batch files - Errorlevels