簡體   English   中英

如何使用PowerShell將多個文件壓縮成一個zip文件?

[英]How to compress multiple files into one zip with PowerShell?

我想將多個文件壓縮成一個zip。

我現在堅持這個:

Get-ChildItem -path C:\logs -Recurse | Where {$_.Extension -eq ".csv" -and $_.LastWriteTime -lt (Get-Date).AddDays(-7)} | write-zip -level 9 -append ($_.LastWriteTime).zip | move-item -Force -Destination {
    $dir = "C:\backup\archive"
    $null = mkdir $dir -Force
    "$dir\"
}

我得到了這個例外

Write-Zip:無法將參數綁定到參數'Path',因為它為null。

這部分是問題:

write-zip -level 9 -append ($_.LastWriteTime).zip

我之前從未使用過PowerShell,但我必須提供腳本,我無法提供ac#解決方案。

問題是Get-ChildItem返回System.IO.FileInfo類的實例,該類沒有名為Path的屬性。 因此,該值不能通過管道自動映射到Write-Zip cmdlet的Path參數。

您必須使用ForEach-Object cmdlet使用System.IO.FileInfo.FullName屬性壓縮文件,該屬性包含完整路徑:

Get-ChildItem -Path C:\Logs | Where-Object { $_.Extension -eq ".txt" } | ForEach-Object { Write-Zip -Path $_.FullName -OutputPath "$_.zip" }

這是使用別名和位置參數的命令的較短版本:

dir C:\Logs | where { $_.Extension -eq ".txt" } | foreach { Write-Zip $_.FullName "$_.zip" }

相關資源:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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