我试图计算目录中的文件,其日期修改时间为周一凌晨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
答案 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