我有一点问题,我需要一些帮助。
问题很简单:我尝试从 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(),但它没有用。
请帮忙吗?我做错了什么?也许我错误地从蝙蝠回来了......或者我错过了什么?
非常感谢!
答案 0 :(得分:0)
您使用cmd
的错误语法。您正在使批处理文件执行与您创建的进程完全分离。你需要这个代码:
Process p = Runtime.getRuntime().exec("cmd /c \""+file+"\"");
// ...
这使得批处理文件输出可以从Process
的输入流中读取。此外,它引用文件名,以防它有任何空格。
无法使命令窗口可见并且仍然能够读取java代码的输出(至少没有本机代码),所以也许你应该创建自己的JFrame
并将输出放在那里