在Azure Devops中,能够添加命令行任务。该命令行产生了一个我想捕获的输出,并能够将其保存到一个变量中,如果可能的话,将在以后的步骤中使用。
例如,考虑我的命令行任务只是对目录dir /b
中的文件进行统一列出,从而在下面产生输出
c:\temp\foo.txt
c:\temp\bar.exe
我想捕获上面列出的目录,并将其用于另一个Azure Devops任务。
我该怎么做?
答案 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)
这是结果:
注意:dir /b
输出是多行值。但是变量doesn't support Multi-line value.
您可以将输出分成多个变量,也可以串联成一个字符串。
连接成字符串
echo "##vso[task.setvariable variable=testvar;]%var1%;%var2%
希望这会有所帮助。