【发布时间】:2020-02-06 07:38:48
【问题描述】:
我遇到了一个奇怪的问题,我正在尝试使用一个流程来自动删除文件夹和子文件夹中的文件,我正在尝试仅删除超过 7 天的文件。
我的代码有效,但它会在递归进入子项时删除 7 天以下的文件。 . .任何人都可以在这里伸出援助之手吗?我只需要在每个文件夹/子文件夹中删除超过 7 天的文件。
Param (
[string]$Source = "C:\Users\Loredanes\Downloads\",
[string]$Days = "1"
)
$Files = Get-ChildItem $Source -Recurse | Where-Object { !$_.PSIsContainer -and $_.LastWriteTime -lt (get-date).addminutes(-$($Days)) }
$Files | Remove-Item -Force
if ($Files.count -gt 0)
{
$Folders = @()
ForEach ($Folder in (Get-ChildItem -Path $Source -Recurse -Directory))
{
$Folders += New-Object PSObject -Property @{
Object = $Folder
Depth = ($Folder.FullName.Split("\")).Count
}
}
$Folders = $Folders | Sort Depth -Descending
ForEach ($Folder in $Folders)
{
If ($Folder.Object.GetFileSystemInfos().Count -eq 0)
{
Write-Host "Removing Folder: $($Folder)"
Remove-Item -Path $Folder.Object.FullName -Force
}
}
}
else
{
Write-Host "No Empty folders found after removing files older than $($Days) days."
}
【问题讨论】:
-
如果你想删除超过 7 天的文件,这两个是没有意义的。
[string]$Days = "1"$_.LastWriteTime -lt (get-date).addminutes(-$($Days))。例如,运行这一行,你就会明白我的意思。$days = 1 ; Get-Date ; (Get-Date).AddMinutes(-$($days)) -
我应该如何修改这个?我知道这不是我写的有点晦涩难懂,仍然很难遵循那里的台词...显然没有意义,但是我必须根据我们的目的对其进行修改和调整...
-
好吧,不是从脚本运行时删除所有超过 7 天的文件,而是删除所有超过 1 分钟的文件。
标签: powershell recursion powershell-2.0