我有以下行来运行批处理文件,
Process process = Runtime.getRuntime().exec("cmd /c start rake.bat");
但我希望它在后台运行,而不是向用户显示命令行。如何更改它才能执行此操作?
问题是命令窗口打开并导入程序GUI。我只是希望命令窗口在执行批处理文件时不可见。
答案 0 :(得分:8)
完全删除'start'将完成您想要的操作(因为这是创建窗口的原因):
Process process = Runtime.getRuntime().exec("cmd /c rake.bat");
我已经测试了这个并且它有效,当然如果你想与命令提示符进行通信你必须有输入和输出流,也不要忘记你的错误流 正如评论中所述虽然在XP上删除'start'不会有帮助(因为它不会起作用)。
答案 1 :(得分:1)
我不太确定你在'背景'中的意思
如果您的意思是窗口不可见,this SO answer可能会有用。
如果(但是)你的意思是你希望你的Java程序在执行时继续运行,那么你应该在separate thread中生成它。
答案 2 :(得分:0)
Process process = Runtime.getRuntime().exec("cmd /c start rake.bat");
如果从java进程调用上面的行来执行批处理文件。默认情况下,这将在后台运行。