4

我正在寻找通过命令行执行外部程序,但我发现只有当程序存在于我从中调用它的目录中时我才能这样做。我希望能够从任何目录执行程序。

我已经为 Windows (7) 设置了 Path 变量,并且能够使用命令行从任何目录手动执行程序;但是我无法通过 Java 做到这一点。

相关代码:

 Runtime rt = Runtime.getRuntime();

 Process proc = rt.exec(new String[]{"C:\\AutomateKPI\\GetLog.exe", "-e", rossIP});

我的问题是上述程序的输出产生了一个通用命名的文件“log.txt”。这将在线程化我的程序时导致问题。如果无法使用路径变量,或者我可以将程序复制到新目录中,然后将其删除。我想避免这样做。

编辑:上述代码的工作原理是 GetLog.exe 位于 C:\AutomateKPI 中。我想引用 %PATH% 以便我可以从 C:\AutomateKPI\*NewDir* 运行 GetLog.exe

4

2 回答 2

5

尝试使用ProcessBuilder. 它允许您指定工作目录:

String commandPath = "C:" + File.pathSeparator +
                     AutomateKPI" + File.pathSeparator + "GetLog.exe";
ProcessBuilder pb = new ProcessBuilder(commandPath, "-e", rossIP);
pb.directory(new File("intendedWorkingDirectory"));
Process p = pb.start();

或者,如果C:\AutomateKPI在您的%PATH%

ProcessBuilder pb = new ProcessBuilder("GetLog.exe", "-e", rossIP);

从文档中不清楚,但ProcessBuilder似乎以类似于系统的方式定位事物,例如%PATH%在 Windows 上使用。

于 2012-08-09T14:12:23.043 回答
0

好吧,只要您知道要打开的程序的路径,并且不必使用 cmd,这应该每次都可以:

File file = new File("File Directory");
Desktop dt = Desktop.getDesktop();

try {
    dt.open(file);
} catch (IOException e1) {
}
于 2012-08-09T14:29:09.687 回答