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