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

如何用PowerShell递归解析文件夹中所有报告文件并写入Excel

批量递归处理.ctx文件并写入Excel的解决方案

需要批量递归处理指定文件夹下所有格式一致的.ctx报告文件,提取每个文件的第11、16、17行数据,按特定规则解析后写入Excel的指定列。以下是基于现有单文件代码修改后的完整解决方案:

# 配置路径
$ctxFolderPath = "\\Path\Report"  # 存放.ctx文件的文件夹路径
$excelFilePath = "\\Path\Logs\log1.xlsm"  # Excel文件路径
$worksheetName = "Payer"

# 递归获取所有.ctx文件(包含子目录)
$ctxFiles = Get-ChildItem -Path $ctxFolderPath -Filter "*.ctx" -Recurse -File

# 初始化Excel对象(仅打开一次,提升效率)
$Excel = New-Object -ComObject Excel.Application
$Excel.Visible = $false
$Excel.DisplayAlerts = $false
$Workbook = $Excel.Workbooks.Open($excelFilePath)
$Worksheet = $Workbook.Worksheets.Item($worksheetName)

# 获取当前Excel表的最后一行,后续新增数据从下一行开始
[int]$lastRow = $Worksheet.UsedRange.Rows.Count + 1

# 循环处理每个.ctx文件
foreach ($file in $ctxFiles) {
    # 一次性读取文件内容,再提取指定行
    $content = Get-Content -Path $file.FullName
    $FileDateLine = $content | Select-Object -Index 11
    $FileLine = $content | Select-Object -Index 16
    $FileDocCountLine = $content | Select-Object -Index 17

    # 按规则解析并写入Excel对应列
    $Worksheet.Cells.Item($lastRow, 1) = $FileLine.Split("\")[6]  # 名称写入第1列
    $Worksheet.Cells.Item($lastRow, 2) = $FileDateLine.Split()[8]  # 日期写入第2列
    $Worksheet.Cells.Item($lastRow, 3) = $FileDocCountLine.Split()[9]  # 文档计数写入第3列

    # 行数自增,准备写入下一个文件的数据
    $lastRow++
}

# 保存并关闭Excel
$Workbook.Save()
$Workbook.Close($true)
$Excel.Quit()

# 彻底清理Excel COM对象,避免残留进程
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($Worksheet) | Out-Null
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($Workbook) | Out-Null
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($Excel) | Out-Null
[System.GC]::Collect()
[System.GC]::WaitForPendingFinalizers()

关键改进说明

  • 递归遍历文件:通过Get-ChildItem -Recurse自动处理目标文件夹及所有子目录中的.ctx文件
  • Excel对象复用:仅初始化一次Excel实例,避免重复打开/关闭带来的性能损耗和进程残留
  • 高效文件读取:每个文件仅读取一次内容,再提取指定行,比原代码多次调用Get-Content更高效
  • 安全进程清理:使用COM对象释放+垃圾回收替代原代码的Stop-Process,避免误杀用户正在使用的Excel进程
  • 简化行号计算:提前获取初始最后一行,循环中逐行递增,避免重复计算UsedRange

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 18:40:10