我正在浏览工作驱动器上的文件夹,这些文件夹中的文件已有20年以上的历史了。我们希望将这些文件从该驱动器上移开,以清理空间并更好地组织它。
我有一个PowerShell脚本可以浏览文件夹并输出到csv文件。
它将放入csv文件中,但此处有成千上万个文件。我们只想在该文件上修改最新的文件。它给了我所有文件。
我能否仅从该文件夹输出最新的修改文件,然后再移至下一个文件夹?
Get-ChildItem -LiteralPath Y:\XYZ\MainFolder -Recurse -Depth 2 |Format-Table| Out-File C:\Users\USER\Desktop\aCSVfile.csv
答案 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所述。
希望这就是您要寻找的信息。