Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Windows 10的PowerShell中获取文件夹及其子文件夹中所有文件的时间戳列表_Powershell_Tree_Timestamp - Fatal编程技术网

在Windows 10的PowerShell中获取文件夹及其子文件夹中所有文件的时间戳列表

在Windows 10的PowerShell中获取文件夹及其子文件夹中所有文件的时间戳列表,powershell,tree,timestamp,Powershell,Tree,Timestamp,我想得到文本格式的文件树,每个对象都有三个精确的时间戳。我没有找到任何实用程序提供带有精确时间戳的文件树,所以我决定使用PowerShell。以下是我到目前为止掌握的一段代码: $items = @() dir -Force | foreach { $Name = $_.Name $Creation = $_.CreationTimeUtc $Modified = $_.LastW

我想得到文本格式的文件树,每个对象都有三个精确的时间戳。我没有找到任何实用程序提供带有精确时间戳的文件树,所以我决定使用PowerShell。以下是我到目前为止掌握的一段代码:

        $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
等属性的数量没有限制。