在Windows 10的PowerShell中获取文件夹及其子文件夹中所有文件的时间戳列表
我想得到文本格式的文件树,每个对象都有三个精确的时间戳。我没有找到任何实用程序提供带有精确时间戳的文件树,所以我决定使用PowerShell。以下是我到目前为止掌握的一段代码:在Windows 10的PowerShell中获取文件夹及其子文件夹中所有文件的时间戳列表,powershell,tree,timestamp,Powershell,Tree,Timestamp,我想得到文本格式的文件树,每个对象都有三个精确的时间戳。我没有找到任何实用程序提供带有精确时间戳的文件树,所以我决定使用PowerShell。以下是我到目前为止掌握的一段代码: $items = @() dir -Force | foreach { $Name = $_.Name $Creation = $_.CreationTimeUtc $Modified = $_.LastW
$items = @()
dir -Force | foreach {
$Name = $_.Name
$Creation = $_.CreationTimeUtc
$Modified = $_.LastWriteTimeUtc
$Accessed = $_.LastAccessTimeUtc
$Size = $_.Length
$i = New-Object -TypeName psobject
$i | Add-Member -MemberType NoteProperty -Name Name -Value $Name
$i | Add-Member -MemberType NoteProperty -Name CreatedDateUtc -Value $Creation
$i | Add-Member -MemberType NoteProperty -Name CreatedTimeUtc -Value $Creation.TimeOfDay
$i | Add-Member -MemberType NoteProperty -Name ModifiedDateUtc -Value $Modified
$i | Add-Member -MemberType NoteProperty -Name ModifiedTimeUtc -Value $Modified.TimeOfDay
$i | Add-Member -MemberType NoteProperty -Name AccessedDateUtc -Value $Accessed
$i | Add-Member -MemberType NoteProperty -Name AccessedTimeUtc -Value $Accessed.TimeOfDay
$i | Add-Member -MemberType NoteProperty -Name Size -Value $Size
$items += $i
}
$items | Format-Table
这段代码远非完美,因为它不显示太多的文件属性,也不显示子文件夹。我无法包含更多文件属性,因为PowerShell中的表宽度有限
我想要的是修改这段代码,使其包含子目录、更多文件属性,并将结果以CSV文件的形式保存。这能做到吗?如果是,具体如何?多谢各位
它不显示子文件夹
要包含子文件夹,请使用带有Get ChildItem
(别名dir
)的-Recurse
开关:
要将结果保存到CSV,请使用导出CSV
cmdlet:
Get-ChildItem -Recurse |Export-Csv C:\path\to\new\file.csv -NoTypeInformation
如果需要特定属性,请使用Select Object
cmdlet,然后再通过管道导出Csv:
Get-ChildItem -Recurse |Select-Object Name,CreationTimeUtc |Export-Csv C:\path\to\new\file.csv -NoTypeInformation
如果要使用更具体的时间信息格式化日期,请将其放入计算属性中:
Get-ChildItem -Recurse |Select-Object Name,@{Name='CreatedTimeUtc';Expression={$_.CreationTimeUtc.TimeOfDay}} |Export-Csv C:\path\to\new\file.csv -NoTypeInformation
您还可以使用自定义日期格式字符串:
Get-ChildItem -Recurse |Select-Object Name,@{Name='CreatedTimeUtc';Expression={'{0:HH:mm:ss.fff}' -f $_.CreationTimeUtc}} |Export-Csv C:\path\to\new\file.csv -NoTypeInformation
它不显示子文件夹
要包含子文件夹,请使用带有Get ChildItem
(别名dir
)的-Recurse
开关:
要将结果保存到CSV,请使用导出CSV
cmdlet:
Get-ChildItem -Recurse |Export-Csv C:\path\to\new\file.csv -NoTypeInformation
如果需要特定属性,请使用Select Object
cmdlet,然后再通过管道导出Csv:
Get-ChildItem -Recurse |Select-Object Name,CreationTimeUtc |Export-Csv C:\path\to\new\file.csv -NoTypeInformation
如果要使用更具体的时间信息格式化日期,请将其放入计算属性中:
Get-ChildItem -Recurse |Select-Object Name,@{Name='CreatedTimeUtc';Expression={$_.CreationTimeUtc.TimeOfDay}} |Export-Csv C:\path\to\new\file.csv -NoTypeInformation
您还可以使用自定义日期格式字符串:
Get-ChildItem -Recurse |Select-Object Name,@{Name='CreatedTimeUtc';Expression={'{0:HH:mm:ss.fff}' -f $_.CreationTimeUtc}} |Export-Csv C:\path\to\new\file.csv -NoTypeInformation
此简单命令是否已满足所有三个准确UTC时间戳的原始要求?
Export Csv
cmdlet对Format Table
等属性的数量没有限制。此简单命令是否已满足所有三个准确UTC时间戳的原始要求Export Csv
cmdlet对Format Table
等属性的数量没有限制。