PowerShell批量导出项目文件夹CSV及获取最新修改时间需求
PowerShell批量处理项目文件夹解决方案
一、批量导出每个项目文件夹的详细CSV
针对E:\Projects下的250个项目文件夹,基于你提供的单文件夹脚本,通过循环遍历实现批量导出,每个项目生成以自身ID命名的CSV文件:
# 定义项目根目录和CSV输出目录 $projectsRoot = "E:\Projects" $outputDir = "C:\Setup" # 创建输出目录(如果不存在) if (-not (Test-Path $outputDir)) { New-Item -ItemType Directory -Path $outputDir | Out-Null } # 遍历所有项目文件夹 Get-ChildItem -Path $projectsRoot -Directory | ForEach-Object { $projectFolder = $_ $projectName = $projectFolder.Name $csvPath = Join-Path -Path $outputDir -ChildPath "Results_$projectName.csv" # 递归遍历当前项目下的所有文件和文件夹,生成CSV Get-ChildItem -Path $projectFolder.FullName -Recurse | ForEach-Object { [PSCustomObject]@{ "filePath" = $_.FullName "Name" = $_.Name "Last Modified" = $_.LastWriteTime "Folder Name" = $_.Directory.Name # 替代原字符串拆分逻辑,更可靠 "Extension" = if ($_.PSIsContainer) { "Folder" } else { $_.Extension } } } | Export-Csv -Path $csvPath -NoTypeInformation -Encoding UTF8 }
关键优化点:
- 用
-Directory参数直接筛选项目根目录下的文件夹,避免处理无关文件 - 用
$_.Directory.Name替代原字符串拆分逻辑,获取父文件夹名称更稳定 - 提前创建输出目录,避免导出时因目录不存在报错
- 每个CSV文件以项目ID命名,方便后续对应查找
二、获取每个项目的最新修改时间,筛选2022年之前的归档项目
要判断哪些项目需要归档,递归获取每个项目内所有文件的最新修改时间,再与2022年1月1日对比:
$projectsRoot = "E:\Projects" $cutoffDate = Get-Date "2022-01-01" # 遍历所有项目文件夹,计算最新修改时间并筛选 Get-ChildItem -Path $projectsRoot -Directory | ForEach-Object { $projectFolder = $_ # 递归获取所有文件的LastWriteTime,取最大值 $latestWriteTime = Get-ChildItem -Path $projectFolder.FullName -Recurse -File | Measure-Object -Property LastWriteTime -Maximum | Select-Object -ExpandProperty Maximum # 如果项目下没有文件(只有文件夹),则用项目文件夹自身的LastWriteTime if (-not $latestWriteTime) { $latestWriteTime = $projectFolder.LastWriteTime } # 输出项目的归档状态 [PSCustomObject]@{ "项目ID" = $projectFolder.Name "最新修改时间" = $latestWriteTime "是否需要归档" = if ($latestWriteTime -lt $cutoffDate) { "是" } else { "否" } } } | Export-Csv -Path "C:\Setup\归档项目列表.csv" -NoTypeInformation -Encoding UTF8
关键说明:
- 用
-File参数只获取文件的修改时间(文件夹的修改时间无法准确代表内容更新) - 用
Measure-Object直接计算最大的LastWriteTime,比手动遍历更高效 - 处理空项目(仅含文件夹无文件)的情况,避免返回空值
- 最终输出所有项目的归档状态,方便批量处理
内容的提问来源于stack exchange,提问作者Christopher Pye




