我有一个必须解压缩到目标文件夹的 zip 文件。在我提取之前,我只想备份根文件和将通过提取 zip 文件替换的子目录。
我可以编写一个脚本来找出 .zip 中的子目录并从目标文件夹中备份这些子目录(如果它们可用)?
我将在 Azure DevOps 中使用这个脚本。
我有一个必须解压缩到目标文件夹的 zip 文件。在我提取之前,我只想备份根文件和将通过提取 zip 文件替换的子目录。
我可以编写一个脚本来找出 .zip 中的子目录并从目标文件夹中备份这些子目录(如果它们可用)?
我将在 Azure DevOps 中使用这个脚本。
您可以使用 PowerShell 发现 zip 文件内容,检查它是否存在于目标文件夹中,如果存在 - 进行备份。例如:
$ZipFilePath = "C:\Users\sabramczyk\Documents\Scrum.zip"
$DestinationFolder = "c:\test"
Add-Type -assembly "System.IO.Compression.FileSystem"
if (![System.IO.File]::Exists($ZipFilePath)) {
throw "Zip file ""$ZipFilePath"" not found."
}
$ZipContent = ([System.IO.Compression.ZipFile]::OpenRead($ZipFilePath)).Entries.FullName
foreach($zipContent in $ZipContent)
{
if(Test-Path $DestinationFolder+"/"+$zipContent)
{
# Do backup
}
}
最简单的方法是将文件从您的 zip 中提取到某个临时文件夹(在 Azure DevOps 上,它可能是此变量后面的文件夹Agent.TempDirectory
)。然后,您可以将要备份的文件复制到另一个位置,$(Agent.TempDirectory)/backup
然后打包此文件夹并放入,Build.ArtifactStagingDirectory
如果您想发布它们。在此之后,您可以再次将 zip 解压缩到您的目的地,因为您已经有了备份。
如果您想了解有关上述文件夹的更多信息,您可能会发现此文档很有用。