我有以下行来运行一个批处理文件,
Process process = Runtime.getRuntime().exec("cmd /c start rake.bat");
但我想它在后台运行,并不会显示在命令行给用户。 我怎样才能改变它做到这一点?
问题是,在命令窗口打开并intrupts程序GUI。 我只是想在其执行的批处理文件中的命令窗口中是不可见的。
我有以下行来运行一个批处理文件,
Process process = Runtime.getRuntime().exec("cmd /c start rake.bat");
但我想它在后台运行,并不会显示在命令行给用户。 我怎样才能改变它做到这一点?
问题是,在命令窗口打开并intrupts程序GUI。 我只是想在其执行的批处理文件中的命令窗口中是不可见的。
删除“开始”完全会做你想要什么(因为这是为创建窗口):
Process process = Runtime.getRuntime().exec("cmd /c rake.bat");
我测试了这一点,它的工作着,当然,如果你想用命令提示符沟通你必须有输入和输出流,还不忘你的错误流正如评论指出,虽然取消对XP不会帮助“开始”(因为它不会工作)。
我不太清楚你的意思由“后台”
如果你的意思只是该窗口是不可见的, 这SO答案可能是有用的。
如果(但是)你是说你希望你的Java程序继续运行,而这个执行,那么你应该在产卵这一关单独的线程 。
不管上述情况, 要注意捕捉到您的批处理文件的sdtout /标准错误 。
Process process = Runtime.getRuntime().exec("cmd /c start rake.bat");
如果要调用从Java进程上述行来执行批处理文件。 这将默认在后台运行。