如何计算本周修改的文件?

时间:2015-12-07 21:19:11

标签: powershell

我试图计算目录中的文件,其日期修改时间为周一凌晨12:00:01到周日。我希望脚本能够重置"周一上午12:00:01为了自己写一下,我已经几次废弃了下面的例子,但这个似乎是一个好的开始。

这是我到目前为止所拥有的:

$dow = "Monday"
$today = (Get-Date).DayOfWeek
$FolderResults = (Get-ChildItem -Path C:\Temp -Filter *.* |
    Where-Object {
        $_.LastWriteTime.DayOfWeek -eq $dow -AND $_.LastWriteTime.DayOfWeek -eq $today
    }).Count

2 个答案:

答案 0 :(得分:3)

DayOfWeek是枚举(星期日= 0,星期一= 1等)

您可以利用它来计算上周一的日期:

$LastMonday = ((Get-Date).AddDays(-(6 + (get-date).DayOfWeek) % 7)).date

然后:

$FolderResults = (Get-ChildItem -Path C:\Temp -Filter *.* |
Where-Object { $_.LastWriteTime -gt $LastMonday }).Count

答案 1 :(得分:1)

条件

$_.LastWriteTime.DayOfWeek -eq $dow -AND $_.LastWriteTime.DayOfWeek -eq $today

只会为您提供星期一修改过的文件,并且仅在 星期一

时才会显示。

您可以使用DayOfWeek属性的数值来计算时间范围。

$today   = (Get-Date).Date                     # current date, 0:00:00
$offset  = ($today.DayOfWeek.value__ + 6) % 7  # number of days since Monday
$refdate = $today.AddDays(-$offset)            # most recent Monday, 0:00:00

$num = Get-ChildItem -Path 'C:\Temp' -Filter *.* |
       Where-Object { $_.LastWriteTime -gt $refdate } |
       Measure-Object |
       Select-Object -Expand Count