【问题标题】:How to close command windows with Java如何使用 Java 关闭命令窗口
【发布时间】:2009-03-05 21:29:22
【问题描述】:

每次我使用Runtime.exec("cmd /c start....") 时,我都会打开一个cmd 窗口。我想通过关闭每个以前的 cmd 窗口来创建一个更无缝的应用程序。我该怎么做?

如果有人知道在同一个 cmd 窗口中运行一系列命令而不是每次执行命令时都打开新命令的更好方法,请告诉我。

【问题讨论】:

  • 为什么窗户不关?您是否以这种方式开始长期运行的流程?
  • 是的。我正在打开一个 cmd 窗口来运行脚本。然后我需要转到我工作目录中的另一个目录并运行另一系列命令。这意味着我打开了多个 cmd 窗口。我想在同一个窗口中一个接一个无缝地运行一系列命令。

标签: java window command runtime.exec


【解决方案1】:

不要使用启动,它会打开另一个窗口

替换:

Runtime.exec("cmd /c start....")

与:

Runtime.exec("cmd /c ....")

【讨论】:

  • 你说的太对了。我什至没有注意到命令字符串中的“start”,即使我正在格式化它。
  • 直到现在我才知道 start 做了什么 ;)。
  • @Amara:在 cmd 窗口中,输入 START /?寻求有关该命令的帮助。
【解决方案2】:

为什么需要 cmd windows?

我会直接在 Java 中运行命令并捕获输出并将其显示在本地窗口中(如果需要的话)。

只要确保您使用了程序的所有输出,否则它可能会停止。还要记住关闭 stdout、stderr 和 stdin 流,否则某些文件句柄可能会泄漏(嗯,在某些 Unix 操作系统上的某些 JDK 上确实如此……Windows,谁知道呢)。

【讨论】:

  • 我正在尝试运行 python 脚本和批处理文件。是否可以直接在 Java 中运行,我将如何开始? (我想我需要提出这个问题?:))
  • @Amara:Python 的脚本解释器是一个程序,cmd.exe 也是。两者都可以与命令行参数一起使用来执行它们的相关脚本(.py 或 .bat 文件)。如果您有兴趣,还有用于在 VM 中执行 python 的 Jython。
【解决方案3】:

您无法从 Java 控制打开的窗口。但我为您推荐两种解决方案:

第一

Runtime.exec("cmd /c start /MIN ...")

/MIN 参数将阻止窗口出现。

第二次:将所有必须调用的应用程序放在同一个批处理文件中,调用一次。 :-)

【讨论】:

  • 最小化窗口并不能真正摆脱它。
  • 放入批处理文件的选项可能效果更好。我已经尝试了没有启动的 cmd /c 并且我的命令不会运行。所以我会尝试批处理文件路由。感谢大家!我学到了很多:)
猜你喜欢
  • 1970-01-01
  • 2018-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-16
  • 1970-01-01
  • 2013-01-11
  • 1970-01-01
相关资源
最近更新 更多