我有一个项目,我正在尝试从类
中运行批处理文件最终目标是在许多机器上运行 - 所以我不能使用“魔术”路径来使用此文件,因为它位于我的项目中而不是我的C驱动器
绝对路径(显然)有效,但我很难在Eclipse中创建路径来引用它
我在一个名为“batchfiles”的文件夹中有batch.bat但是当我尝试运行以下命令时,我得到一个文件未找到错误
Runtime.getRuntime().exec("cmd /c start \\batchfiles\\batch.bat");
即使batch.bat存在于我的项目中的该文件夹中
答案 0 :(得分:1)
您应该查看 ProcessBuilder 。以下是文档中的完整示例:
ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2");
Map<String, String> env = pb.environment();
env.put("VAR1", "myValue");
env.remove("OTHERVAR");
env.put("VAR2", env.get("VAR1") + "suffix");
pb.directory(new File("myDir"));
File log = new File("log");
pb.redirectErrorStream(true);
pb.redirectOutput(Redirect.appendTo(log));
Process p = pb.start();
assert pb.redirectInput() == Redirect.PIPE;
assert pb.redirectOutput().file() == log;
assert p.getInputStream().read() == -1;
在你的情况下,我认为命令应该是:
ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "start", "\\batchfiles\\batch.bat");