首页 > 解决方案 > 在 Jenkins Groovy 脚本中,如何从批处理文件中获取返回值

问题描述

我正在寻找在 Jenkins 管道 Groovy 脚本中执行的批处理文件的结果。

我知道我可以这样做:

def result = "pem.cmd Test_Application.pem".execute().text

但是,我需要运行一批命令并获取批处理文件的结果。上面的那个例子只有一个命令。我需要先更改目录,然后执行带有参数的“cmd”文件。所以我尝试了以下方法:

def cmd = new StringBuilder()
cmd.append("CD \"${path}\"\n")
cmd.append("IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%\n")
cmd.append("pem.cmd Test_Application.pem\n")
//echo bat(returnStdout: true, script: cmd.toString())
def result = bat cmd.toString()
echo result

即使日志显示该命令确实返回了结果,“result”变量仍为空。我知道我可以将批处理文件结果输出到文本文件并读取文本文件,但我只是想看看我是否可以像上面尝试的那样获取结果。任何帮助表示赞赏。

标签: jenkinsgroovyjenkins-pipeline

解决方案


好的,我得到它的工作如下:

def cmd = new StringBuilder()
cmd.append("CD \"${path}\"\n")
cmd.append("pem.cmd Test_Application.pem\n")

def x = bat(
    returnStdout: true,
    script: "${cmd.toString()}"
)

echo x

这样做。


推荐阅读