我正在开发一个偶尔会在Windows计算机上运行的Java应用程序。 在某些时候,我需要运行一个Cygwin提示并在其中执行一些命令。
我找到了一个使用Runtime类的主题: http://www.javaquery.com/2011/03/how-to-execute-multiple-command-in.html
但是它没有启动真正的 cmd.exe 窗口,它只在后台运行,输出只是打印在Eclipse控制台上。
我正在寻找运行真正的 cmd.exe 窗口的解决方案,我需要将尽可能多的命令传递给Windows shell。 这可能吗?
答案 0 :(得分:5)
这个有用...使用&&运算符,您可以在同一命令提示符中添加一个或要执行的命令
try {
Process p = Runtime
.getRuntime()
.exec("cmd /c start cmd.exe /K \"dir && ping localhost && echo end\"");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
考虑here中的解决方案
来自提问者的更新:在cygwin中执行命令的解决方案
getRuntime().exec("cmd /c start C:/cygwin64/bin/bash.exe --login -c \"ls ; whoami ; exec bash\"");
答案 1 :(得分:0)
不太确定,但如果我正确理解您的问题,请尝试:对于java conifguration面板上的窗口,应该取消选中show console按钮。
答案 2 :(得分:0)
如果您不需要在屏幕上显示控制台,那很容易。您可以采取以下简单步骤:
Process
。start(); cmd.getOutputStream()
cmd.getInputStream()
和/或cmd.getErrorStream()
cmd.getOutputStream()
,如有必要,请按cmd.destroy()
Optionnaly,您可以合并输出和错误流:
Process cmd = new ProcessBuilder("cmd.exe").redirectErrorStream(true).start();
然后您只需忽略cmd.getErrorStream()
,只能从cmd.getInputStream()