批处理或Powershell脚本来清​​理超过6小时的文件?

时间:2017-09-07 01:06:05

标签: windows powershell date batch-file cmd

我想知道.bat是否支持删除超过N小时的文件?我有一个脚本可以删除超过N天的文件,但无法根据小时数找到要删除的命令。如果.bat文件没有每小时功能,我们可以使用PowerShell脚本执行此操作吗?我正在尝试清理C:\ temp(Windows Server)中超过6小时的所有文件。

2 个答案:

答案 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