如何以表格格式展示多路径下的最新文件信息?
PowerShell 批量获取指定路径下最新CSV文件并表格展示
原代码问题说明
你的现有代码存在几个小问题:
- 未过滤CSV文件,会获取路径下所有类型文件
Where-Object {$_.LastWriteTime}条件无效,所有文件都自带LastWriteTime属性- 输出零散,没有将结果整合为清晰的表格格式
优化后的代码
下面是能直接运行的代码,会自动过滤CSV文件,收集每个路径的最新文件信息,最后以表格形式展示:
# 定义需要检查的14个路径(替换成你的实际路径) $Paths = @( 'Path1', 'Path2', 'Path3', 'Path4', 'Path5', 'Path6', 'Path7', 'Path8', 'Path9', 'Path10', 'Path11', 'Path12', 'Path13', 'Path14' ) # 创建空数组用于存储结果 $results = @() foreach ($Path in $Paths) { # 检查路径是否存在 if (-not (Test-Path -Path $Path)) { $results += [PSCustomObject]@{ 检查路径 = $Path 文件名 = "路径不存在" 最后修改时间 = $null 文件大小(字节) = $null } continue } # 获取路径下所有CSV文件,按最后修改时间降序排序,取最新的1个 $latestCsv = Get-ChildItem -Path $Path -Filter "*.csv" -File | Sort-Object -Property LastWriteTime -Descending | Select-Object -First 1 # 判断是否找到CSV文件 if ($latestCsv) { $results += [PSCustomObject]@{ 检查路径 = $Path 文件名 = $latestCsv.Name 最后修改时间 = $latestCsv.LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss") 文件大小(字节) = $latestCsv.Length } } else { $results += [PSCustomObject]@{ 检查路径 = $Path 文件名 = "无CSV文件" 最后修改时间 = $null 文件大小(字节) = $null } } } # 以表格形式输出结果 $results | Format-Table -AutoSize pause
代码关键说明
- 路径存在检查:避免因路径不存在导致报错
- CSV过滤:通过
-Filter "*.csv"只获取CSV文件 - 排序取最新:用
Sort-Object -Descending按修改时间倒序,Select-Object -First 1拿到最新的文件 - 结果整合:用
PSCustomObject统一数据结构,最后用Format-Table -AutoSize生成自适应宽度的表格 - 异常处理:对路径不存在、无CSV文件的情况做了友好提示
内容的提问来源于stack exchange,提问作者John919
相关产品推荐
相关产品推荐

