我想知道.bat是否支持删除超过N小时的文件?我有一个脚本可以删除超过N天的文件,但无法根据小时数找到要删除的命令。如果.bat文件没有每小时功能,我们可以使用PowerShell脚本执行此操作吗?我正在尝试清理C:\ temp(Windows Server)中超过6小时的所有文件。
答案 0 :(得分:0)
你可以使用powershell轻松地获得这些信息。
您需要使用Get-ChildItem(带有recurse参数)并过滤掉文件夹。
get-childitem 'C:\Temp' | Where-Object PSIsContainer -eq $false
请参阅下面的脚本以获取入门基础。
$Files = get-childitem 'C:\Temp' | Where-Object PSIsContainer -eq $false
$LimitTime = (Get-Date).AddHours(-6)
$Files | ForEach-Object {
if ($_.CreationTime -lt $LimitTime -and $_.LastWriteTime -lt $LimitTime) {
Remove-Item -Path $_.FullName -Force -WhatIf
}
}
注意 您需要删除此脚本的 -WhatIf 以实际删除任何内容。
编辑:
感谢andyb评论,我删除了有利于直接日期比较的时间跨度。
答案 1 :(得分:0)
传统批处理文件非常难,但在PowerShell中几乎无足轻重。您可以确定日期和时间。时间'6小时前'只需向Get-Date
返回的对象添加-6小时。在此之后,如果找到文件并将LastWriteTime
属性与(get-date).AddHours(-6)
进行比较并将结果汇总到remove-item
,则只是一个问题。
get-childitem -path <path> |
where-object { -not $_.PSIsContainer -and ( $_.LastWriteTime -lt (Get-Date).AddHours(-6) ) } |
remove-item -force