【问题标题】:How to exclude some directories and files from deliting in Delete Files task如何在删除文件任务中排除某些目录和文件的删除
【发布时间】:2020-03-05 13:53:30
【问题描述】:

我想从$(Build.ArtifactStagingDirectory) 中删除所有文件(它在相应的构建代理文件夹中被称为“a”文件夹,单击here 以阅读有关 azure 管道中预定义变量的更多信息)。我也知道Delete Files task 使用minimatch patterns

我的$(Build.ArtifactStagingDirectory)的内部结构:

a
|--Client
|       |--ImportantFolder
|       |                |--FileNumber1
|       |                |--....(Many other files here)
|       |                |--FileNumberN
|       |--OtherJunkFolder
|       |--OtherFile
|--JunkFolder

所以,a 文件夹有两个子文件夹(ClientJunkFolder),Client 文件夹有一个名为 ImportantFolder 的文件夹,一个名为 OtherJunkFolder 的文件夹和一个名为 OtherFile 的文件。 ImportantFolder 有许多不同名称和扩展名的文件。

如何删除文件夹a 中的所有文件夹和文件,除了文件夹Client/ImportantFolders 中的文件夹和文件?换句话说:我想做这样的事情:

**
!Client/ImportantFolder/**

但是这种模式会删除文件夹a 中的所有内容。我也试过了

**
!(Client/**)

只是

**
!(Client)

两者都不起作用。

【问题讨论】:

    标签: azure azure-devops azure-pipelines


    【解决方案1】:

    经过测试,!(Client) 模式有效。但它也将OtherJunkFolderOtherFile 保留在文件夹Client 中。

    模式!(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。检查以下示例:

    【讨论】:

      【解决方案2】:

      尝试不使用**,仅使用!(Client),它将删除除Client 文件夹之外的JunkFolder

      你可以做Client/ImportantFolder,我不知道为什么,我猜是因为删除看起来a文件夹而不是更深。

      【讨论】:

        猜你喜欢
        • 2013-07-31
        • 1970-01-01
        • 2020-12-17
        • 2014-02-05
        • 2011-05-18
        • 1970-01-01
        • 2011-08-01
        • 2021-10-28
        • 2010-10-08
        相关资源
        最近更新 更多