限制PowerShell Get-ChildItem按文件创建日期范围

46
我使用PowerShell命令生成某些文件类型的CSV报告。我的目标是找出特定日期范围内添加了多少个文件。现在,脚本会找到所有文件,我需要按日期排序来查找它们的数量。我想修改命令,只返回创建日期在特定日期范围内的对象,例如,如果此文件的创建日期在2013年3月1日至3月31日之间。可能有一种方法可以通过日期范围限制命令,很可能使用Select-Object,但我无法弄清楚。
Get-ChildItem 'PATH' -recurse -include @("*.tif*","*.jp2","*.pdf") | Select-Object FullName, CreationTime, @{Name="Mbytes";Expression={$_.Length/1Kb}}, @{Name="Age";Expression={(((Get-Date) - $_.CreationTime).Days)}} | Export-Csv 'PATH\scans.csv'

记录一下,我不熟悉 Powershell 并且不知道要搜索什么。我使用的命令是从其他网站上获取的。我确实在谷歌上搜索了这个答案,但没有找到;所以我想到使用 Select-Object。我拒绝并反感你的说法,这应该是一个帮助论坛;但是,我感激你的帮助。 - Nathan
3
+1 是因为 Nathan 确实 作出了努力。对于一个不熟悉某项技术的人(甚至可能不知道该搜索什么),和一个不作任何努力的人之间有很大的区别。[我之前的评论澄清--"+1" 表示我点赞了你的问题以抵消负评] :-) - Nate Hekman
1
我想我只是期望更多。在谷歌上简单搜索“powershell获取文件创建日期”就可以找到除了第一个命中的“-and”之外的所有内容,而且你不需要具备powershell知识来构建这个搜索短语=) - Frode F.
3个回答

70

使用Where-Object来测试$_.CreationTime

Get-ChildItem 'PATH' -recurse -include @("*.tif*","*.jp2","*.pdf") | 
    Where-Object { $_.CreationTime -ge "03/01/2013" -and $_.CreationTime -le "03/31/2013" }

3
使用 Where-Object,例如:
Get-ChildItem 'PATH' -recurse -include @("*.tif*","*.jp2","*.pdf") | 
Where-Object { $_.CreationTime -gt "03/01/2013" -and $_.CreationTime -lt "03/31/2013" }
Select-Object FullName, CreationTime, @{Name="Mbytes";Expression={$_.Length/1Kb}}, @{Name="Age";Expression={(((Get-Date) - $_.CreationTime).Days)}} | 
Export-Csv 'PATH\scans.csv'

2

已经解决了...

Get-ChildItem C:\Windows\ -recurse -include @("*.txt*","*.pdf") |
Where-Object {$_.CreationTime -gt "01/01/2013" -and $_.CreationTime -lt "12/02/2014"} | 
Select-Object FullName, CreationTime, @{Name="Mbytes";Expression={$_.Length/1Kb}}, @{Name="Age";Expression={(((Get-Date) - $_.CreationTime).Days)}} | 
Export-Csv C:\search_TXT-and-PDF_files_01012013-to-12022014_sort.txt

请使用块引用将4个空格附加到“Get-ChildItem” - HKTonyLee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接