Azure Devops:将命令行任务的输出保存到要在下一步中使用的变量

时间:2020-06-30 10:36:37

标签: azure-devops

在Azure Devops中,能够添加命令行任务。该命令行产生了一个我想捕获的输出,并能够将其保存到一个变量中,如果可能的话,将在以后的步骤中使用。

例如,考虑我的命令行任务只是对目录dir /b中的文件进行统一列出,从而在下面产生输出

c:\temp\foo.txt
c:\temp\bar.exe

我想捕获上面列出的目录,并将其用于另一个Azure Devops任务。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

我想捕获上面列出的目录,并将其用于另一个Azure Devops任务。

您可以使用脚本获取任务输出。然后将输出设置为环境变量。

以下是命令行Taks脚本:

SETLOCAL ENABLEDELAYEDEXPANSION
SET count=1
FOR /F "tokens=* USEBACKQ" %%F IN (`dir /b`) DO (
  SET var!count!=%%F
  SET /a count=!count!+1
)

echo "##vso[task.setvariable variable=testvar;]%var1%"
echo "##vso[task.setvariable variable=testvar1;]%var2%"

ENDLOCAL

您可以通过$(variable name)在以下任务中使用变量。

例如:

echo $(testvar)
echo $(testvar1)

这是结果:

Test Result

注意:dir /b输出是多行值。但是变量doesn't support Multi-line value.

您可以将输出分成多个变量,也可以串联成一个字符串。

连接成字符串

echo "##vso[task.setvariable variable=testvar;]%var1%;%var2%

希望这会有所帮助。