如何在后台运行Java代码中的命令行?

时间:2012-07-09 11:46:13

标签: java command runtime.exec

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

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

但我希望它在后台运行,而不是向用户显示命令行。如何更改它才能执行此操作?

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

3 个答案:

答案 0 :(得分:8)

完全删除'start'将完成您想要的操作(因为这是创建窗口的原因):

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

我已经测试了这个并且它有效,当然如果你想与命令提示符进行通信你必须有输入和输出流,也不要忘记你的错误流 正如评论中所述虽然在XP上删除'start'不会有帮助(因为它不会起作用)。

答案 1 :(得分:1)

我不太确定你在'背景'中的意思

如果您的意思是窗口不可见,this SO answer可能会有用。

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

无论如何,be careful to capture your batch file's sdtout/stderr

答案 2 :(得分:0)

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

如果从java进程调用上面的行来执行批处理文件。默认情况下,这将在后台运行。