gpt4 book ai didi

java - 在 Java 中运行 .bat 文件

转载 作者:太空宇宙 更新时间:2023-11-04 14:53:26 25 4
gpt4 key购买 nike

我目前正在尝试用 Java 执行 .bat 文件。 bat 文件实际上运行完美,但执行后,我的主程序退出。我不知道为什么,我需要它在执行 bat 文件后继续执行其代码。程序和bat文件都将在Windows上运行。这是我如何运行bat文件的代码:

if(!running) {
@SuppressWarnings("unused")
Process process = Runtime.getRuntime().exec("cmd /c start "+localTargetInPath+"\\startBatchClient.bat");

process.getInputStream().close();
process.getOutputStream().close();
process.getErrorStream().close();
}
//wait to allow batch client to start up
Thread.sleep(1000);

我几天来一直试图解决这个问题,但没有成功。有什么想法吗?

编辑:

只是为了澄清答案中所述的内容:

重点是执行以下操作:

  1. 运行批处理文件
  2. 批处理文件启动批处理客户端
  3. Java程序继续运行
  4. Java 程序连接到正在运行的批处理客户端

编辑2:

这是批处理文件的内容(它再次运行应用程序,没有任何问题:

set JAVA_HOME="C:\Program Files\Java\jdk1.6.0_23"
set ep_root=C:\app\plm\e6_1_1\P2\BatchClient
set axalant_root=C:\app\plm\e6_1_1\P2\BatchClient\axalant
set batchcli_root=C:\app\plm\e6_1_1\P2\BatchClient
set EP_MACH=intel-ms-nt4.0

C:\Windows\system32\cmd.exe /K c:\app\plm\e6_1_1\P2\BatchClient\axalant\cmd\batchclient_nowrapper.cmd -eciservermode -p %localInPath%\batchClient.properties -T C:\zftmp\svc.emea.batch11e\testclient.properties

最佳答案

Runtime.exec() 方法生成一个进程,但不等待它完成。

您应该在返回的 Process 实例上使用 waitFor() 方法,以等待进程结束。

另外,@ixe013 的评论是正确的:您应该从命令中删除 start 单词,因为它会生成另一个进程。如果你不删除 start,那么 waitFor() 对你没有多大帮助:它会等待 start 命令结束,这是瞬时的。

关于java - 在 Java 中运行 .bat 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23495944/

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