在Jenkins Groovy脚本中,如何从批处理文件中获取返回值

时间:2019-01-30 23:20:37

标签: jenkins groovy jenkins-pipeline

我希望获取在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

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

1 个答案:

答案 0 :(得分:2)

好的,我的工作方式如下:

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

做到了。