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