簡體   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