繁体   English   中英

使用PowerShell按日期筛选文件夹

[英]Using PowerShell to filter folders by date

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

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

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

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

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

您将需要PowerShell 5.x,否则, Get-ChildItem-Directory开关将不可用:

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

如果您想在CSV文件中减少信息,可以使用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;}
    ...

在这里,您可以使用Select-ObjectWhere-Object*Property成员类型。

如果您使用的PowerShell少于5,则必须检查PSIsContainer属性,如本stackoverflow 答案中所述

希望这是您正在寻找的信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM