【发布时间】:2021-04-26 09:31:12
【问题描述】:
我已编写代码将 7 天前的文件从源文件夹压缩到子文件夹,然后删除原始文件。我的代码最适用于具有较少文件的 Compress-Archive 和 Remove-Item cmdlet,但需要更多时间和系统内存来处理大量文件。
所以,我正在研究一个使用 7zip 的解决方案,因为它更快。
以下代码可以正确压缩,但不限于 7 天以前的文件,并从源文件夹中删除所有文件。它应该只压缩和删除超过 7 天的文件。
代码有什么问题吗。
if (-not (test-path "$env:ProgramFiles\7-Zip\7z.exe")) {throw "$env:ProgramFiles\7-Zip\7z.exe needed"}
set-alias 7z "$env:ProgramFiles\7-Zip\7z.exe"
$Days = "7"
$Date = Get-Date -format yyyy-MM-dd_HH-mm
$limit = (Get-Date).AddDays(-$Days)
$filePath = "C:\Users\529817\New folder1\New folder_2"
Where LastWriteTime -lt $limit | 7z a -t7z -sdel "C:\Users\529817\New folder1\New folder_2\ARCHIVE\$Date.7z" "$filePath"
【问题讨论】:
-
$limit = (Get-Date).AddDays(-7).Dateand.. 你是不是忘了Get-ChildItem?? -
.Date将舍入到结果日期的午夜。这可能很好,但我没有读到问题中的意图。
标签: powershell archive ziparchive