Windows 使用PowerShell按日期筛选文件夹

Windows 使用PowerShell按日期筛选文件夹,windows,powershell,filtering,Windows,Powershell,Filtering,我正在浏览一个工作驱动器上的文件夹,其中有超过20年历史的文件。我们想把这些文件从这个驱动器上移开,以清理房间并更好地组织它 我有一个PowerShell脚本,可以查看文件夹并输出到csv文件 它放入csv文件,但这里有数千个文件。我们只想在那里修改最新版本的文件。它给了我所有的文件 我可以让它只输出该文件夹中最新修改的文件,然后移动到下一个文件夹吗 Get-ChildItem -LiteralPath Y:\XYZ\MainFolder -Recurse -Depth 2 |Format-T

我正在浏览一个工作驱动器上的文件夹,其中有超过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
-目录开关将不可用:

Get-ChildItem -Path . -Directory -Recurse | Where-Object { $_.LastWriteTime -lt (Get-Date "2018-10-04") } | Export-Csv "test.csv" -NoTypeInformation -Delimiter ";"
  • getchilditem-Path-目录-递归
    -获取所有目录
  • Where Object{$\uuu.LastWriteTime-lt(获取日期“2018-10-04”)}
    -检查上次写入时间是否早于2018-10-04(您也可以使用
    LastAccessTime
  • 导出Csv“test.Csv”-NoTypeInformation-Delimiter”;“
    -将过滤后的对象导出到Csv文件
如果希望CSV文件中的信息较少,可以使用
选择对象

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;}
    ...
在这里,您可以使用
选择对象
其中对象
中的
*属性
成员类型

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


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

您不应该将
表格格式
传递到任何内容。你只想要一个文件?或者每个文件夹1个文件?除了MadTechnician指出的
格式-*
错误之外,您是想在“主文件夹”中找到最新的文件,还是想在其下找到即时目录,还是想导出整个目录树中的每个文件夹?您是想导出比X日期早的文件夹列表吗?谢谢您的回复。我对使用powershell非常陌生,所以我对它一无所知。为什么我不应该用烟斗?我想最后修改每个文件夹,然后进入下一个文件夹。我想去主目录下的2个目录,我只去了初始文件夹,它不够深。我想将该文件放入excel文件,并按1-3年、4-6年、6-9年和10+对文件进行排序。