簡體   English   中英

創建文件夾的zip,然后刪除內容

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM