我想从我的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
答案 0 :(得分:2)
您将获得BAT的退出代码,而不是EXE的返回代码。但是你没有在BAT中指定一个退出代码,所以你得到了垃圾。
我手边没有窗框,但这样的东西应该可以使用
C:\tryfile\myprogram.exe
EXIT /B %ERRORLEVEL%