[英]Create zip of folder and then delete the contents
我有一個簡單的文件夾結構,需要壓縮后才能上傳到AWS Lambda函數
node-modules/
index.js
package.json
上面的文件在根目錄中。 基本上,最終目標是我想要所有這些文件和子文件/目錄的zip文件,而不是原來的結構。
當我嘗試運行以下命令時,它說它無法訪問E://apps/myapp/release.zip
因為它正在被另一個進程使用。 但是我可以看到它開始創建release.zip,但是它沒有所有內容。
Add-Type -Assembly "System.IO.Compression.FileSystem";
[System.IO.Compression.ZipFile]::CreateFromDirectory(E://apps/myapp, E://apps/myapp/release.zip);
所以我嘗試了另一種方法。 取出文件夾和兩個文件,然后將它們復制到一個臨時文件夾中,然后嘗試將其壓縮回根目錄。
Copy-Item E://apps/myapp E://apps/myapp/temp -recurse
我確實看到了一個temp/
文件夾,但在temp文件夾中,這就像是在文件路徑變得太長之前永不結束副本的開始。
任何提示將不勝感激。
問題可能是您在嘗試壓縮的文件夾中創建了zip文件。 當您嘗試使用臨時文件夾(因此啟動)時,您基本上會執行相同的操作。
嘗試在要壓縮的源文件夾之外創建目標。
$source = "E://apps/myapp"
$destination = "E://apps/myapp.release.zip"
# If the archive already exists, an IOException exception is thrown.
if(Test-Path $destination) {
Remove-Item -Path $destination -Force -Recurse -Confirm:$false
}
[Reflection.Assembly]::LoadWithPartialName( "System.IO.Compression.FileSystem" )
[System.IO.Compression.ZipFile]::CreateFromDirectory($source, $destination)
# Once archive created delete folder
if(Test-Path $destination) {
Remove-Item -Path $source -Force -Recurse -Confirm:$false
Write-Host "directory removed: $source"
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.