我有以下行来运行批处理文件,
Process process = Runtime.getRuntime().exec("cmd /c start rake.bat");
但我希望它在后台运行,而不是向用户显示命令行。我怎样才能改变它来做到这一点?
问题是命令窗口打开并插入程序 GUI。我只是希望命令窗口在执行批处理文件时不可见。
我有以下行来运行批处理文件,
Process process = Runtime.getRuntime().exec("cmd /c start rake.bat");
但我希望它在后台运行,而不是向用户显示命令行。我怎样才能改变它来做到这一点?
问题是命令窗口打开并插入程序 GUI。我只是希望命令窗口在执行批处理文件时不可见。
完全删除“开始”会做你想做的事(因为这是创建窗口的原因):
Process process = Runtime.getRuntime().exec("cmd /c rake.bat");
我已经对此进行了测试并且它有效,当然,如果您想与命令提示符进行通信,则必须具有输入和输出流,也不要忘记您的错误流如评论中所述,尽管删除 XP 上的“开始”无济于事(因为它不起作用)。
我不太清楚你所说的“在后台”是什么意思
如果您只是说窗口不可见,那么这个 SO 答案可能有用。
如果(但是)你的意思是你希望你的 Java 程序在它执行时继续运行,那么你应该在一个单独的线程中生成它。
无论上述情况如何,请小心捕获批处理文件的 sdtout/stderr。
Process process = Runtime.getRuntime().exec("cmd /c start rake.bat");
如果您从 java 进程中调用上述行来执行批处理文件。这将默认在后台运行。