我想删除其中的所有文件$(Build.ArtifactStagingDirectory)
(它是相应构建代理文件夹中所谓的“a”文件夹,单击阅读有关天蓝色管道中预定义变量的更多信息)。我也知道删除文件任务 https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/delete-files?view=azure-devops使用.
我的内部结构$(Build.ArtifactStagingDirectory)
:
a
|--Client
| |--ImportantFolder
| | |--FileNumber1
| | |--....(Many other files here)
| | |--FileNumberN
| |--OtherJunkFolder
| |--OtherFile
|--JunkFolder
所以,文件夹a
有两个子文件夹(Client
and JunkFolder
), the Client
文件夹中有一个名为ImportantFolder
,一个名为OtherJunkFolder
和一个名为OtherFile
. ImportantFolder
有许多具有不同名称和扩展名的文件。
如何删除文件夹中的所有文件夹和文件a
除了文件夹中的内容Client/ImportantFolders
?换句话说:我想做这样的事情:
**
!Client/ImportantFolder/**
但这种模式会删除文件夹中的所有内容a
。我也尝试过
**
!(Client/**)
and just
**
!(Client)
两者都不起作用。
测试后,图案!(Client)
作品。但同时也保留了OtherJunkFolder
and OtherFile
在客户端文件夹中。
Pattern !(Client/ImportantFolder)
不起作用。
作为解决方法,您可以使用脚本任务从文件夹中删除除 Client/ImportantFolders 文件夹中的所有文件夹和文件。请检查 powershell 任务中的以下 powershell 脚本。
Get-ChildItem "$(build.artifactstagingdirectory)" | where { $_.Name -inotmatch "Client" } | Remove-Item -Recurse
Get-ChildItem "$(build.artifactstagingdirectory)/Client" | where { $_.Name -inotmatch "ImportantFolder" } | Remove-Item -Recurse
另一种可能的解决方法是使用复制文件任务来复制文件夹Client/ImportantFolder
到一个新文件夹。对于下面的示例,文件夹Client/ImportantFolder
将被复制到一个新文件夹$(Agent.BuildDirectory)/a1
。然后将以下任务指向这个新文件夹。
如果您的目的是仅包含文件夹Client/ImportantFolder
在您要在以下发布构建工件任务中发布的工件中。最简单的方法就是点Path to publish
到文件夹Client/ImportantFolder
。那么发布的工件将只有文件夹Client/ImportantFolder
。检查下面的例子:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)