从java运行可见的.bat,并读取输出

时间:2014-05-08 14:22:53

标签: java batch-file cmd

我有一点问题,我需要一些帮助。

问题很简单:我尝试从 java程序运行 .bat 文件,然后阅读退出代码..但我需要看看.bat正在做什么。

.bat文件只执行一些外部程序并返回a:

exit %errorlevel%

我的java程序执行以下操作:

Process p = Runtime.getRuntime().exec("cmd /c start /wait "+file);
int result = p.waitFor();
System.out.println("exit = "+result);

问题在于,当我使用" start / wait" 参数时,我看到.bat执行但无法读取输出..它始终为0。

如果我打电话给.bat 没有"开始/等待"我可以很好地阅读输出!但我看不到蝙蝠的执行情况。

我尝试阅读 getInputStream() getErrorStream(),但它没有用。

请帮忙吗?我做错了什么?也许我错误地从蝙蝠回来了......或者我错过了什么?

非常感谢!

1 个答案:

答案 0 :(得分:0)

您使用cmd的错误语法。您正在使批处理文件执行与您创建的进程完全分离。你需要这个代码:

Process p = Runtime.getRuntime().exec("cmd /c \""+file+"\"");
// ...

这使得批处理文件输出可以从Process的输入流中读取。此外,它引用文件名,以防它有任何空格。

无法使命令窗口可见并且仍然能够读取java代码的输出(至少没有本机代码),所以也许你应该创建自己的JFrame并将输出放在那里