gpt4 book ai didi

java - 头痛 - 从 java 运行批处理文件

转载 作者:可可西里 更新时间:2023-11-01 14:45:56 27 4
gpt4 key购买 nike

所以让我首先说我已经遍历了我能找到的每一个问答,无论是在网站上还是在网站外,但我仍然碰壁。

我的程序:

我的程序所做的只是在与我的程序相同的目录中运行一个批处理文件。

代码是:

try {

Process p = Runtime.getRuntime().exec("cmd /c start startclient.bat");

} catch (IOException ex) {

Logger.getLogger(MCPFrame.class.getName()).log(Level.SEVERE, null, ex);

}
}

当我执行代码时,出现警告窗口:

Windows cannot find 'startclient.bat'. Make sure you typed the name correctly, and then try again.

如果我指定目录:

Process p = Runtime.getRuntime().exec("cmd /c start C:\\Folder\\startclient.bat");

我得到:

The system cannot find the path specified.
Press any key to continue . . .
C:\Windows\system32>

所以我没有根据的猜测是,当我通过 java 调用批处理文件时,它从“C:\Windows\system32>”开始,但是当我双击批处理文件时,它从本地目录开始。

我该如何解决这个问题?

:(

附言更重要的是,去年我实际上让这个东西工作,但由于某种原因它不再表现了。

公务员事务局我运行的是 Win 7,一切都是最新的。

最佳答案

(我只是想发表评论,但我还没有足够的代表发表评论,因此这个“答案”)

我处理过很多从 Java 调用的批处理文件(在 Linux、OS X 和 Windows 上),首先要知道的是你基本上永远不应该使用构造函数一个字符串,因为它只是有问题。

您最好始终自己创建参数数组并使用此方法:

public Process exec(String [] cmdArray)

您还必须知道正确使用流可能很棘手。在许多情况下,您最好只使用可以更轻松地处理批处理文件的库。

例如,您可能喜欢 Apache 的 commons exec,而不是重新发明轮子:

http://commons.apache.org/exec/

关于java - 头痛 - 从 java 运行批处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7725049/

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