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.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).Days if ($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
使用提示
- -NoTypeInformation 参数去掉第一行的类型信息
现在你可以用这些命令轻松生成专业的文件清单了!需要生成什么类型的清单,就复制对应的命令,修改几个参数即可。