gpt4 book ai didi

java - 从 Java 运行批处理,cmd 提示符消失

转载 作者:行者123 更新时间:2023-12-01 11:12:27 26 4
gpt4 key购买 nike

我能够使用 SO 问题的合并来获得一行代码:

  • 从 Java 应用程序中运行批处理文件
  • 包含与批处理文件位于同一目录中的参数
  • 参数和批处理文件位于与 JAR/java 应用程序无关的目录中

所以我用了这个:

Runtime.getRuntime().exec("cmd /c start batchfile.bat argument.js", null, new File( path ));

这很有效,只是它在执行完批处理文件后使 cmd 提示符保持打开状态。我环顾四周,似乎有/c 标志应该使它在运行后关闭,但对我来说它一直保持打开状态。我尝试删除“开始”,但这意味着 cmd 提示符根本不会打开。

是否因为我结合了一个参数并使用了不同的路径,所以它不会导致 cmd 提示符打开,然后像大多数示例一样在完成后关闭?

最佳答案

按该顺序调用 cmd.exestart 会创建一个单独的窗口,但根据您的描述,命令 shell 似乎并未终止。我能够在一个简单的批处理脚本中复制这种行为。如果您想让 Java 调用保持原样,请检查并确保您的批处理脚本包含 exit 语句。最好根据批处理脚本中的成功或失败条件退出(即:exit 0exit 1 等...)

:: batchfile.bat
...
exit 0

假设您没有在批处理脚本中启动任何新 shell 或提示输入,则向现有批处理脚本添加显式退出应该会导致窗口关闭。您还可以尝试按原样保留批处理脚本,并按照其他人在评论中建议的那样,稍微更改命令文本的顺序。

改用这个

start cmd.exe /c ...

首先调用start,然后调用cmd.exe/c,然后根据需要调用参数。我在这里尝试了这两个选项,其中一个都工作得很好,导致批处理窗口按预期关闭。

关于java - 从 Java 运行批处理,cmd 提示符消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32193594/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com