【发布时间】:2019-03-20 14:50:41
【问题描述】:
在下面的 Powershell 脚本中,我正在解压缩一个压缩文件夹,将另一个文件夹(从不同的路径)移动到这个解压缩文件夹的路径中。最后,将解压缩的文件夹拉回并删除我在此过程中创建的所有临时路径。它正在成功复制文件夹,但令我惊讶的是,解压缩文件夹中的现有文件正在重复。
请有人告诉我我在这里做错了什么吗?
if(Test-Path $Env:BUILD_SOURCESDIRECTORY/MyProject/WEB/dist)
{
if(Test-Path $Env:BUILD_ArtifactStagingDirectory\MyProject.API.zip)
{
Expand-Archive -Path $Env:BUILD_ARTIFACTSTAGINGDIRECTORY\MyProject.API.zip -DestinationPath $Env:BUILD_SOURCESDIRECTORY\MyProject\API\temp -Force
Write-Host "MyProject.API.zip folder unzipped successfully!"
New-Item -ItemType Directory -Force -Path $Env:BUILD_SOURCESDIRECTORY\MyProject\WEB\temp1
Write-Host "A temporary folder 'temp1' inside Web project sources directory created."
New-Item -ItemType Directory -Force -Path $Env:BUILD_SOURCESDIRECTORY\MyProject\WEB\temp1\temp2
Write-Host "A temporary folder 'temp2' inside temp1 created."
Copy-Item $Env:BUILD_SOURCESDIRECTORY\MyProject\WEB\dist\* -Destination $Env:BUILD_SOURCESDIRECTORY\MyProject\WEB\temp1\temp2 -Recurse
Write-Host "Web project dist folder content copied to the temp temp2 folder"
Copy-Item -Path $Env:BUILD_SOURCESDIRECTORY\MyProject\WEB\temp1\* -Destination $(Get-ChildItem -Path $Env:BUILD_SOURCESDIRECTORY\MyProject\API\temp -Directory -Recurse | ? {$_.Basename -eq 'MyDestinationFolder'} | % { $_.FullName}) -Recurse -Force
Write-Host "temp2 folder and its content copied to the 'MyDestinationFolder' folder of the unzipped folder."
if(Test-Path $Env:BUILD_SOURCESDIRECTORY\MyProject\WEB\temp1)
{
Remove-Item -Recurse -Force $Env:BUILD_SOURCESDIRECTORY\MyProject\WEB\temp1
Write-Host "Temporary temp1 folder deleted."
}
Compress-Archive -Path $Env:BUILD_SOURCESDIRECTORY\MyProject\API\temp\* -Update -DestinationPath $Env:BUILD_ARTIFACTSTAGINGDIRECTORY\MyProject.API.zip
Write-Host "Unzipped folder is zipped back."
Remove-Item -Recurse -Force $Env:BUILD_SOURCESDIRECTORY\MyProject\API\temp
Write-Host "Temporary unzipped folder deleted."
}
}
【问题讨论】:
-
所以本质上,您需要解压 .zip,将文件复制到解压后的目录中,然后再将其重新压缩回来?
-
这是真的@Matt
-
您只是想将一个文件添加到 zip 中,还是添加多个文件?
-
许多文件和文件夹。
标签: azure powershell azure-devops azure-pipelines