You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell脚本遍历月度文件夹时仅生成最后一个CSV文件的问题求助

问题解决:为每个月度文件夹生成独立CSV文件

需求与现状

  • 需求:为每个包含数据的月度文件夹生成对应名称的CSV输出文件(如Log.Jan.csv、Log.Feb.csv)
  • 目录结构:
    C:\Logs\15Sec\Ref.Data\Month\Log.Jan\Day.1\
    ~\Month\~下包含Log.Jan至Log.Dec的文件夹;
    ~\Log.Jan\~下包含对应月份的30/31个Day文件夹;
    ~\Day.1\~下存放带数据的.log文件。
    
  • 已实现:脚本在单个月度文件夹(如Log.Jan)下运行时,可读取该月份所有Day文件夹的数据并写入CSV
  • 当前问题:脚本在C:\Logs\15Sec\Ref.Data\Month\路径运行时,仅生成最后一个月度文件夹的CSV文件,其余月份数据被覆盖

问题原因

脚本中Export-Csv始终使用固定文件名C:\test\output.csv,而该命令默认采用覆盖模式,每轮循环都会替换掉之前的文件内容,最终仅保留最后一次循环(最后一个月度文件夹)的数据。

修正后的PowerShell脚本

$targDir = "C:\Logs\15Sec\Ref.Data\Month\";
$subDir = Get-ChildItem "$targDir" –Directory;
foreach($sub in $subDir) {
    Get-ChildItem -Path $sub –Recurse *.log | 
    Select-Object -Property @(
        'FullName'
         @{ Name = "LineCount"; Expression = { 
             (Get-Content -Path $_.FullName | Select-Object -Skip 8 | Measure-Object).Count
         }} 
    ) |
    Export-Csv "C:\test\$($sub.Name).csv" -NoTypeInformation
}

关键改动说明

  • 将固定输出文件名output.csv改为动态文件名$($sub.Name).csv,直接复用月度文件夹的名称作为CSV文件名,确保每个月份生成独立的输出文件
  • 保留原有核心逻辑:遍历所有月度文件夹、递归读取.log文件、跳过前8行统计有效行数

内容的提问来源于stack exchange,提问作者Hawfinch Taylor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 18:46:12