PowerShell如何为每个子文件夹生成单独记录txt文件名和行数的CSV文件
PowerShell脚本调整方案
修改后的完整代码
# 定义根日志文件夹路径 $rootPath = "C:\Users\testserver\Documents\logfiles" # 获取根目录下所有一级子文件夹 $subFolders = Get-ChildItem $rootPath -Directory # 遍历每个子文件夹单独处理 foreach ($folder in $subFolders) { # 统计当前子文件夹内所有txt文件的文件名和行数 $results = Get-ChildItem -Path $folder.FullName -Filter "*.txt" | ForEach-Object { $_ | Select-Object Name, @{n="lines";e={Get-Content $_.FullName | Measure-Object -Line | Select-Object -ExpandProperty Lines }} } # 生成带子文件夹名的CSV输出路径 $outputCsv = "C:\Users\testserver\Documents\results_$($folder.Name).csv" # 导出当前子文件夹的统计结果 $results | Export-Csv $outputCsv -NoTypeInformation }
改动说明
- 调整处理逻辑为先遍历根目录下的所有子文件夹,每个子文件夹作为独立处理单元,避免一次性拉取所有层级的txt文件导致数据混合
- 每个子文件夹单独统计内部txt文件的信息,统计完成后直接导出为单独的CSV文件
- CSV文件名自动追加对应子文件夹的名称,格式为
results_子文件夹名.csv,可根据需求自行修改命名规则 - 可选适配:如果子文件夹存在多层嵌套需要全部处理,可将获取子文件夹的代码修改为
$subFolders = Get-ChildItem $rootPath -Directory -Recurse,可同时给CSV文件名补充路径标识避免重名。
内容的提问来源于stack exchange,提问作者TitanL0rd
相关产品推荐
相关产品推荐

