【发布时间】:2015-08-25 00:04:20
【问题描述】:
我能够使用 SO 问题的合并来获得一行代码:
- 从 Java 应用程序中运行批处理文件
- 包含与批处理文件位于同一目录中的参数
- 参数和批处理文件位于与 JAR/java 应用程序无关的目录中
所以我用了这个:
Runtime.getRuntime().exec("cmd /c start batchfile.bat argument.js", null, new File( path ));
这很好用,只是它在执行完批处理文件后让 cmd 提示符保持打开状态。我环顾四周,似乎有 /c 标志应该在运行后关闭它,但对我来说它一直保持打开状态。我尝试删除“开始”,但这意味着 cmd 提示符根本没有打开。
是否因为我结合了一个参数和使用不同的路径,它不会像 SO 上的大多数示例一样导致 cmd 提示打开然后在完成后关闭?
【问题讨论】:
-
你试过
start cmd /c ...。我也会考虑使用ProcessBuilder而不是Runtime.exec -
start /WAIT怎么样?我不确定start和cmd /C是否真的有必要...... -
start cmd /c导致 IOException,使用与ProcessBuilder相同的命令给我同样的问题,start /WAIT导致 IOException。我也不认为start和cmd /C都是必要的,但是如果没有start,我根本没有命令提示符。 -
cmd /c batchfile.bat argument.js应该可以工作,但如果不行,一个简单的解决方法是使用exit命令(不是 /B 开关)结束批处理文件 -
当你调用它并且命令行敌人没有出现时,它仍然在进程中运行它。您可以使用 InputStream 从控制台读取输出。
标签: java batch-file cmd