8

我有以下行来运行批处理文件,

Process process = Runtime.getRuntime().exec("cmd /c start rake.bat");

但我希望它在后台运行,而不是向用户显示命令行。我怎样才能改变它来做到这一点?

问题是命令窗口打开并插入程序 GUI。我只是希望命令窗口在执行批处理文件时不可见。

4

3 回答 3

11

完全删除“开始”会做你想做的事(因为这是创建窗口的原因):

Process process = Runtime.getRuntime().exec("cmd /c rake.bat");

我已经对此进行了测试并且它有效,当然,如果您想与命令提示符进行通信,则必须具有输入和输出流,也不要忘记您的错误流如评论中所述,尽管删除 XP 上的“开始”无济于事(因为它不起作用)。

于 2012-07-09T11:56:39.033 回答
1

我不太清楚你所说的“在后台”是什么意思

如果您只是说窗口不可见,那么这个 SO 答案可能有用。

如果(但是)你的意思是你希望你的 Java 程序在它执行时继续运行,那么你应该在一个单独的线程中生成它。

无论上述情况如何,请小心捕获批处理文件的 sdtout/stderr

于 2012-07-09T11:52:09.970 回答
0
Process process = Runtime.getRuntime().exec("cmd /c start rake.bat");

如果您从 java 进程中调用上述行来执行批处理文件。这将默认在后台运行。

于 2012-07-09T11:49:49.463 回答