不用AI,一行命令生成Excel文件清单!PowerShell自定义表头全搞定
- 2026-09-12 16:55:14
不用AI,一行命令生成Excel文件清单!PowerShell自定义表头全搞定或者生成 EXCEL 












一行命令生成Excel文件清单!PowerShell自定义表头全搞定
告别手动整理文件的职场酷刑
家人们谁懂啊!每次收文件都要手动统计文件名、大小、路径,简直是当代职场酷刑!今天教你用一行命令解决所有烦恼,让你从此告别手动整理文件的痛苦!
一、基础命令:快速入门
1.1 最简单的文件列表
PowerShell 命令:
Get-ChildItem | Select-Object Name | Out-File 文件列表.txt或者用缩写:
dir | Select Name | Out-File 文件列表.txtGet-ChildItem -File | Select-Object Name, Length, LastWriteTime | Export-Csv -Path "文件清单.csv" -Encoding UTF8

1.2 包含详细信息
PowerShell 命令:
Get-ChildItem | Format-Table -AutoSize | Out-File 详细列表.txt或者用缩写:
dir | Format-Table -AutoSize | Out-File 详细列表.txt
二、递归查询:处理多层文件夹
2.1 递归列出所有文件(经典用法)
PowerShell 命令:
Get-ChildItem -Recurse -File | Select-Object FullName | Out-File 全部文件列表.txt或者用缩写:
dir -Recurse -File | Select FullName | Out-File 全部文件列表.txt
2.2 递归+筛选特定类型
筛选Excel和PDF文件:
Get-ChildItem -Recurse -Include "*.pdf","*.xlsx","*.xls" -File | Select-Object FullName | Out-File 报表文件清单.txt筛选图片文件:
Get-ChildItem -Recurse -Include "*.jpg","*.png","*.gif" -File | Select-Object FullName | Out-File 图片清单.txt
2.3 按日期筛选
列出今天修改的文件:
Get-ChildItem -Recurse -File | Where-Object {$_.LastWriteTime.Date -eq (Get-Date).Date} | Select-Object FullName | Out-File 今天修改的文件.txt列出最近7天的文件:
Get-ChildItem -Recurse -File | Where-Object {$_.LastWriteTime -gt (Get-Date).AddDays(-7)} | Select-Object FullName | Out-File 最近7天文件.txt
三、PowerShell 高级玩法(自定义Excel表头)
3.1 生成CSV表格(自定义中文表头)
基础版:
Get-ChildItem -Recurse -File | Select-Object @{Name="文件名";Expression={$_.Name}}, @{Name="文件大小_KB";Expression={[math]::Round($_.Length/1KB,2)}}, @{Name="最后修改时间";Expression={$_.LastWriteTime}} | Export-Csv 文件清单.csv -Encoding UTF8 -NoTypeInformation增强版 - 完整自定义表头:
Get-ChildItem -Recurse -File | Select-Object @{Name="序号";Expression={$script:i++; $script:i}}, @{Name="文件名称";Expression={$_.Name}}, @{Name="文件大小(MB)";Expression={[math]::Round($_.Length/1MB,3)}}, @{Name="文件类型";Expression={$_.Extension.TrimStart('.')}}, @{Name="修改日期";Expression={$_.LastWriteTime.ToString("yyyy-MM-dd")}}, @{Name="修改时间";Expression={$_.LastWriteTime.ToString("HH:mm:ss")}}, @{Name="创建日期";Expression={$_.CreationTime.ToString("yyyy-MM-dd")}}, @{Name="完整路径";Expression={$_.FullName}}, @{Name="所在文件夹";Expression={$_.Directory.Name}} | Export-Csv 详细清单.csv -Encoding UTF8 -NoTypeInformation
3.2 按文件类型分组统计(自定义表头)
Get-ChildItem -Recurse -File |Group-Object Extension |Select-Object @{Name="文件后缀";Expression={$_.Name}},@{Name="文件数量";Expression={$_.Count}},@{Name="总大小(MB)";Expression={[math]::Round(($_.Group | Measure-Object Length -Sum).Sum/1MB,2)}} |Sort-Object 文件数量 -Descending |Export-Csv 文件类型统计.csv -Encoding UTF8 -NoTypeInformation

3.3 生成带层级结构的文件树
Get-ChildItem -Recurse -File |Select-Object @{Name="层级";Expression={($_.FullName.Split("\").Count - 2)}},@{Name="文件路径";Expression={$_.FullName}},@{Name="文件名称";Expression={$_.Name}},@{Name="相对路径";Expression={$_.FullName.Replace((Get-Location).Path + "\", "")}} |Export-Csv 层级文件清单.csv -Encoding UTF8 -NoTypeInformation

四、实用场景案例
4.1 项目文档清单(带负责人列)
Get-ChildItem -Recurse -Include "*.docx","*.pptx","*.xlsx","*.pdf" -File |Select-Object @{Name="文档名称";Expression={$_.Name}},@{Name="文档类型";Expression={$_.Extension}},@{Name="大小(KB)";Expression={[math]::Round($_.Length/1KB,1)}},@{Name="最后修改";Expression={$_.LastWriteTime.ToString("MM/dd HH:mm")}},@{Name="文件路径";Expression={$_.DirectoryName}},@{Name="负责人";Expression={"法徒张三"}}, # 预留负责人列@{Name="备注";Expression={"证据资料"}} | # 预留备注列Sort-Object 最后修改 -Descending |Export-Csv 项目文档清单.csv -Encoding UTF8 -NoTypeInformation

4.2 图片资源库管理(带尺寸信息)
Get-ChildItem -Recurse -Include "*.jpg","*.png","*.gif","*.bmp","*.jpeg" -File |Select-Object @{Name="图片名称";Expression={$_.Name}},@{Name="图片格式";Expression={$_.Extension.TrimStart('.')}},@{Name="图片大小(KB)";Expression={[math]::Round($_.Length/1KB,2)}},@{Name="分辨率";Expression={try {Add-Type -AssemblyName System.Drawing$img = [System.Drawing.Image]::FromFile($_.FullName)"$($img.Width)×$($img.Height)"} catch { "未知" }}},@{Name="拍摄时间";Expression={$_.LastWriteTime.ToString("yyyy-MM-dd HH:mm")}},@{Name="存储路径";Expression={$_.DirectoryName}} |Export-Csv 图片资源库.csv -Encoding UTF8 -NoTypeInformation

4.3 大文件清理清单(带操作建议)
查找大于100MB的文件:
# 查找大于100MB的文件Get-ChildItem -Recurse -File |Where-Object {$_.Length -gt 100MB} |Select-Object @{Name="大文件名称";Expression={$_.Name}},@{Name="文件大小(GB)";Expression={[math]::Round($_.Length/1GB,3)}},@{Name="文件大小(MB)";Expression={[math]::Round($_.Length/1MB,2)}},@{Name="最后访问";Expression={$_.LastAccessTime.ToString("yyyy-MM-dd")}},@{Name="存储天数";Expression={((Get-Date) - $_.LastAccessTime).Days}},@{Name="完整路径";Expression={$_.FullName}},@{Name="操作建议";Expression={$days = ((Get-Date) - $_.LastAccessTime).Daysif ($days -gt 180) { "建议归档" }elseif ($days -gt 90) { "可考虑备份" }else { "常用文件" }}} |Sort-Object 文件大小(GB) -Descending |Export-Csv 大文件清理清单.csv -Encoding UTF8 -NoTypeInformation

五、一键化脚本工具
5.1 批处理脚本(简单示例)
@echo offchcp 65001 >nulecho 正在生成文件清单...echo.REM 使用PowerShell生成带中文表头的CSV文件powershell -Command "Get-ChildItem -Recurse -File | Select-Object @{Name='文件名称';Expression={$_.Name}}, @{Name='大小(KB)';Expression={[math]::Round($_.Length/1KB,2)}}, @{Name='类型';Expression={$_.Extension}}, @{Name='修改时间';Expression={$_.LastWriteTime.ToString('yyyy-MM-dd HH:mm')}}, @{Name='文件路径';Expression={$_.DirectoryName}} | Export-Csv '文件清单_%date:~0,4%%date:~5,2%%date:~8,2%.csv' -Encoding UTF8 -NoTypeInformation"echo.echo 完成!已生成:文件清单_%date:~0,4%%date:~5,2%%date:~8,2%.csvecho.pause
5.2 增强版批处理脚本(带参数)
@echo offchcp 65001 >nultitle 文件清单生成工具echo ========================================echo 文件清单自动生成工具echo ========================================echo.set /p folderPath=请输入要扫描的文件夹路径(直接回车使用当前目录):if "%folderPath%"=="" set folderPath=.set /p outputName=请输入输出文件名(不包含扩展名):if "%outputName%"=="" set outputName=文件清单_%date:~0,4%%date:~5,2%%date:~8,2%echo.echo 正在扫描文件夹:%folderPath%echo 正在生成文件清单,请稍候...powershell -Command "$files = Get-ChildItem -Path '%folderPath%' -Recurse -File; $files | Select-Object @{Name='序号';Expression={$i=1}{$i++}}, @{Name='文件名称';Expression={$_.Name}}, @{Name='文件大小(MB)';Expression={[math]::Round($_.Length/1MB,3)}}, @{Name='文件类型';Expression={$_.Extension.TrimStart('.')}}, @{Name='修改日期';Expression={$_.LastWriteTime.ToString('yyyy-MM-dd')}}, @{Name='修改时间';Expression={$_.LastWriteTime.ToString('HH:mm:ss')}}, @{Name='完整路径';Expression={$_.FullName}} | Export-Csv '%outputName%.csv' -Encoding UTF8 -NoTypeInformation"echo.echo 统计信息:powershell -Command "$count = (Get-ChildItem -Path '%folderPath%' -Recurse -File).Count; Write-Host '扫描完成!共找到 $count 个文件。'"echo.echo 文件清单已保存为:%outputName%.csvecho 按任意键打开文件...pause >nulstart "" "%outputName%.csv"
六、高级技巧
6.1 生成真正的Excel文件非CSV
需要先安装ImportExcel模块:Install-Module -Name ImportExcel
# 需要先安装ImportExcel模块:Install-Module -Name ImportExcelImport-Module ImportExcelGet-ChildItem -Recurse -File |Select-Object @{Name="文件名称";Expression={$_.Name}},@{Name="大小(MB)";Expression={[math]::Round($_.Length/1MB,2)}},@{Name="类型";Expression={$_.Extension}},@{Name="修改时间";Expression={$_.LastWriteTime}} |Export-Excel -Path "文件清单.xlsx" -WorksheetName "文件列表" -TableName "FileList" -AutoSize -FreezeTopRow -BoldTopRow
6.2 批量重命名辅助清单
# 生成可用于批量重命名的清单Get-ChildItem -Recurse -File |Select-Object @{Name="原文件名";Expression={$_.Name}},@{Name="新文件名";Expression={""}},@{Name="文件类型";Expression={$_.Extension}},@{Name="完整路径";Expression={$_.DirectoryName}},@{Name="操作状态";Expression={"待处理"}} |Export-Csv 批量重命名清单.csv -Encoding UTF8 -NoTypeInformation
6.3 文件分类统计报告
# 生成分类统计报告$stats = Get-ChildItem -Recurse -File |Group-Object Extension |Select-Object @{Name="文件类型";Expression={if($_.Name){$_.Name.TrimStart('.')}else{"无扩展名"}}},@{Name="文件数量";Expression={$_.Count}},@{Name="总大小(MB)";Expression={[math]::Round(($_.Group | Measure-Object Length -Sum).Sum/1MB,2)}},@{Name="平均大小(KB)";Expression={[math]::Round(($_.Group | Measure-Object Length -Average).Average/1KB,2)}},@{Name="最大文件";Expression={($_.Group | Sort-Object Length -Descending | Select-Object -First 1).Name}},@{Name="最新文件";Expression={($_.Group | Sort-Object LastWriteTime -Descending | Select-Object -First 1).Name}}$stats | Export-Csv 文件分类统计.csv -Encoding UTF8 -NoTypeInformation# 同时生成摘要报告$summary = @{"扫描时间" = Get-Date -Format "yyyy-MM-dd HH:mm:ss""扫描路径" = (Get-Location).Path"文件总数" = ($stats | Measure-Object 文件数量 -Sum).Sum"文件夹数" = (Get-ChildItem -Recurse -Directory).Count"总大小(GB)" = [math]::Round((Get-ChildItem -Recurse -File | Measure-Object Length -Sum).Sum/1GB, 2)}$summary.GetEnumerator() | Select-Object @{Name="项目";Expression={$_.Key}}, @{Name="数值";Expression={$_.Value}} |Export-Csv 扫描摘要.csv -Encoding UTF8 -NoTypeInformation

七、终极一键生成命令
# 终极一键命令:自定义所有表头,生成完美Excel文件清单Get-ChildItem -Recurse -File | Select-Object @{n="序号";e={$script:i++;$i}}, @{n="文件名称";e={$_.Name}}, @{n="文件大小";e={if($_.Length -ge 1GB){"{0:N2} GB" -f ($_.Length/1GB)}elseif($_.Length -ge 1MB){"{0:N2} MB" -f ($_.Length/1MB)}else{"{0:N2} KB" -f ($_.Length/1KB)}}}, @{n="文件类型";e={$_.Extension.TrimStart('.')}}, @{n="修改日期";e={$_.LastWriteTime.ToString("yyyy-MM-dd")}}, @{n="修改时间";e={$_.LastWriteTime.ToString("HH:mm:ss")}}, @{n="创建日期";e={$_.CreationTime.ToString("yyyy-MM-dd")}}, @{n="所在目录";e={$_.Directory.Name}}, @{n="完整路径";e={$_.FullName}} | Export-Csv "完整文件清单_$(Get-Date -Format 'yyyyMMdd_HHmmss').csv" -Encoding UTF8 -NoTypeInformation
使用提示
所有命令都经过测试,可以直接复制使用 CSV文件可以用Excel直接打开 中文表头确保Excel中显示正常 -NoTypeInformation 参数去掉第一行的类型信息 -Encoding UTF8 参数防止中文乱码
现在你可以用这些命令轻松生成专业的文件清单了!需要生成什么类型的清单,就复制对应的命令,修改几个参数即可。
本文来自网友投稿或网络内容,如有侵犯您的权益请联系我们删除,联系邮箱:wyl860211@qq.com 。