有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

windows在Java/Eclipse中运行批处理(shell/CMD)命令的最佳方式?

我已经在Eclipse/java中创建了下面的代码,它执行一个批处理文件,在我的所有TestNG测试都执行之后,该批处理文件也应该执行,但有时bat文件会执行,有时它什么都不做,有什么想法吗

@AfterSuite(alwaysRun = true) 
public void executeBatFile() {
    try {
        List cmdAndArgs = Arrays.asList("cmd", "/c", "copyPasteImgs.bat");
        File dir = new File(Paths.get(System.getProperty("user.dir") + "/..").toRealPath() + "\\");
        ProcessBuilder pb = new ProcessBuilder(cmdAndArgs);
        pb.directory(dir);
        Process p = pb.start();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

批处理文件将文件从本地文件夹移动到远程文件夹(当批处理文件未通过eclipse工作或通过jenkins调用时,我已手动执行批处理文件并完成其工作,非常奇怪…)

谢谢你的帮助


共 (1) 个答案

  1. # 1 楼答案

    Apache Commons CLI提供了使用java中的命令行进行处理的功能。还可以使用exit值了解命令的执行情况。例如:

    String command = "dir";
    CommandLine oCmdLine = CommandLine.parse(command);
            DefaultExecutor oDefaultExecutor = new DefaultExecutor();
            oDefaultExecutor.setExitValue(0);
            try {
                int iExitValue = oDefaultExecutor.execute(oCmdLine);
            } catch (ExecuteException e) {
                System.err.println("Execution failed.");
                e.printStackTrace();
            } catch (IOException e) {
                System.err.println("permission denied.");
                e.printStackTrace();
            }