【问题标题】:Azure Devops: Saving output of a command line task to a variable to be used in another stepAzure Devops:将命令行任务的输出保存到要在另一个步骤中使用的变量
【发布时间】:2020-06-30 10:36:37
【问题描述】:

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

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

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

我想捕获上面列出的目录并在另一个 Azure Devops 任务中使用它们。

我该怎么做?

【问题讨论】:

标签: azure-devops


【解决方案1】:

我想捕获上面列出的目录并在另一个 Azure Devops 任务中使用它们。

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

这里是命令行任务脚本:

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)

结果如下:

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

您可以将输出拆分为多个变量或连接成一个字符串。

连接成一个字符串

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

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2019-12-19
    • 2022-10-21
    • 1970-01-01
    • 2020-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-31
    • 1970-01-01
    相关资源
    最近更新 更多