使用PowerShell按日期筛选文件夹

时间:2019-06-26 01:02:40

标签: windows powershell filtering

我正在浏览工作驱动器上的文件夹,这些文件夹中的文件已有20年以上的历史了。我们希望将这些文件从该驱动器上移开,以清理空间并更好地组织它。

我有一个PowerShell脚本可以浏览文件夹并输出到csv文件。

它将放入csv文件中,但此处有成千上万个文件。我们只想在该文件上修改最新的文件。它给了我所有文件。

我能否仅从该文件夹输出最新的修改文件,然后再移至下一个文件夹?

Get-ChildItem -LiteralPath Y:\XYZ\MainFolder -Recurse -Depth 2  |Format-Table| Out-File C:\Users\USER\Desktop\aCSVfile.csv

1 个答案:

答案 0 :(得分:1)

您将需要PowerShell 5.x,否则my-component.html的{​​{1}}开关将不可用:

-Directory
  • Get-ChildItem-获取所有目录
  • Get-ChildItem -Path . -Directory -Recurse | Where-Object { $_.LastWriteTime -lt (Get-Date "2018-10-04") } | Export-Csv "test.csv" -NoTypeInformation -Delimiter ";" -检查上次写入时间是否早于2018-10-04(您也可以使用Get-ChildItem -Path . -Directory -Recurse
  • Where-Object { $_.LastWriteTime -lt (Get-Date "2018-10-04") }-将过滤的对象导出到CSV文件。

如果您希望在CSV文件中减少信息,可以使用LastAccessTime

Export-Csv "test.csv" -NoTypeInformation -Delimiter ";"

要获取可用的属性,请使用Select-Object

Get-ChildItem -Path . -Directory -Recurse | Where-Object { $_.LastWriteTime -lt (Get-Date "2018-10-04") } |Select-Object Name, PSPath, Parent | Export-Csv "test.csv" -NoTypeInformation -Delimiter ";"          

输出:

Get-Member

您可以在此处使用 Get-ChildItem -Path . -Directory -Recurse | Where-Object { $_.LastWriteTime -lt (Get-Date "2018-10-04") } | Get-Member TypeName: System.IO.DirectoryInfo Name MemberType Definition ---- ---------- ---------- LinkType CodeProperty System.String LinkType{get=GetLinkType;} Mode CodeProperty System.String Mode{get=Mode;} ... FullName Property string FullName {get;} LastAccessTime Property datetime LastAccessTime {get;set;} LastAccessTimeUtc Property datetime LastAccessTimeUtc {get;set;} LastWriteTime Property datetime LastWriteTime {get;set;} LastWriteTimeUtc Property datetime LastWriteTimeUtc {get;set;} Name Property string Name {get;} ... Attributes Property System.IO.FileAttributes Attributes {get;set;} CreationTime Property datetime CreationTime {get;set;} CreationTimeUtc Property datetime CreationTimeUtc {get;set;} ... 中的*Property成员类型。

如果您使用的PowerShell少于5,则必须检查Select-Object属性,如本堆栈溢出answer所述。

希望这就是您要寻找的信息。