【发布时间】:2020-05-04 23:15:59
【问题描述】:
我正在尝试执行以下操作,例如,我们有一个文件夹列表,并希望在与 xml 文件位置相同的目录中创建存档:
文件夹 1
-
子文件夹 1
- XML 文件 1
- XML 文件 2
-
子文件夹 2
- XML 文件 1
- XML 文件 2
-
子文件夹 3
- XML 文件 1
- XML 文件 2
我想要完成的是以下,我想在每个子文件夹中归档每月归档中超过 30 天的 xml 文件。
文件夹 1
-
子文件夹 1
- XML 文件 1
- XML 文件 2
- archive-mar-2020.zip
- archive-feb-2020.zip
-
子文件夹 2
- XML 文件 1
- XML 文件 2
- archive-mar-2020.zip
- archive-feb-2020.zip
这就是我现在所拥有的,所以我需要以某种方式将目标路径更改为当前文件夹或其他东西,但我不知道该怎么做
# set folder path
$log_path = "F:\test\*.xml"
$zip_path = "F:\test\*.7z"
$target_path = "F:\test-zip\"
# set min age of files
$max_days = "-30"
$delete_max_days = "-365"
# get the current date
$curr_date = Get-Date
# determine how far back we go based on current date
$zip_date = $curr_date.AddDays($max_days)
$delete_zip_date = $curr_date.AddDays($delete_max_days)
#$zip_date = (Get-Date).AddMonths(0).Month
# filter files
Get-ChildItem $log_path -Recurse | Where-Object { ($_.LastWriteTime -lt $zip_date) -and ($_.psIsContainer -eq $false)}|
ForEach {
$Zip = $target_path + "{0:MMM}_{0:yyyy}.7z" -f $_.LastWriteTime
& "C:\Program Files\7-Zip\7z.exe" u -mx9 -t7z -m0=lzma2 $Zip $_.FullName |Out-Null
If ($LastExitCode -eq 0) { Remove-Item $_.FullName }
}
$deletefile = Get-ChildItem $zip_path | Where-Object { $_.LastWriteTime -lt $delete_zip_date } | Remove-Item
【问题讨论】:
-
乍一看:您正在为
$max_days和$delete_max_days创建字符串,它们应该是整数。删除那里的引号
标签: xml powershell