我想从我的 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
最佳答案
您正在获取 BAT 的退出代码,而不是 EXE 的返回代码。但是您没有在 BAT 中指定退出代码,因此您会收到垃圾。
我手头没有 Windows 盒子,但类似的东西应该可以工作
C:\tryfile\myprogram.exe
EXIT /B %ERRORLEVEL%
关于java - 进程和退出代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31872203/