Powershell 在指定定时期间,有没有办法过滤所有文件?

Powershell 在指定定时期间,有没有办法过滤所有文件?,powershell,filesystems,timeofday,Powershell,Filesystems,Timeofday,我在不同的文件夹map to X drive中有将近500k的CCTV文件,我需要删除所有这些文件,并指定时间,例如从午夜12点到早上6点,但保留剩余的文件,而不考虑日期。我该怎么做?我尝试使用for文件,但似乎只过滤当天的文件,而且时间也不正确,因为它基本上没有在定义的时间内显示文件 对于PowerShell,我得到了以下信息: Get-ChildItem -Path c:\your\path\here -Recurse | Where-Object -FilterScript { $_.

我在不同的文件夹map to X drive中有将近500k的CCTV文件,我需要删除所有这些文件,并指定时间,例如从午夜12点到早上6点,但保留剩余的文件,而不考虑日期。我该怎么做?我尝试使用for文件,但似乎只过滤当天的文件,而且时间也不正确,因为它基本上没有在定义的时间内显示文件

对于PowerShell,我得到了以下信息:

Get-ChildItem -Path c:\your\path\here -Recurse |
  Where-Object -FilterScript { $_.LastWriteTime -ge (Get-Date).AddHours(-2) }

但不确定如何修改它以获得仅包含上午12点到6点文件的列表。

我认为这可能很有用。它检查
LastWriteTime.Hour
是否大于0(上午12点)但小于6(上午6点):


试试这个。它使用TimeSpans来过滤午夜到早上6点之间的文件:

$timeAfter  = New-TimeSpan -Hours 0 -Minutes 0 -Seconds 0
$timeBefore = New-TimeSpan -Hours 6 -Minutes 0 -Seconds 0

Get-ChildItem -Path 'X:\TheFolder' -Filter '*.CCTV' -File -Recurse | 
    Where-Object { $_.LastWriteTime.TimeOfDay -gt $timeAfter -and $_.LastWriteTime.TimeOfDay -lt $timeBefore} |
    Remove-Item -WhatIf

一旦对控制台中显示的信息感到满意,请卸下
-WhatIf
开关

不知道为什么它只显示几个文件夹而不显示其他文件夹everything@iSpoon那么这些文件是否都有扩展名
.CCTV
?如果没有
-Filter
,您将收集所有文件,可能还有您不想删除的文件,这就是我将其放入的原因。请让我知道需要什么文件扩展名,以便我可以更新代码。(另外,我添加了
-File
开关,以确保您没有获得文件夹对象)
$timeAfter  = New-TimeSpan -Hours 0 -Minutes 0 -Seconds 0
$timeBefore = New-TimeSpan -Hours 6 -Minutes 0 -Seconds 0

Get-ChildItem -Path 'X:\TheFolder' -Filter '*.CCTV' -File -Recurse | 
    Where-Object { $_.LastWriteTime.TimeOfDay -gt $timeAfter -and $_.LastWriteTime.TimeOfDay -lt $timeBefore} |
    Remove-Item -WhatIf