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

如何用PowerShell提取多文本文件指定行及元数据并合并为单文件

需求与问题

需要实现:遍历指定文件夹内的所有.lst文本文件,提取每个文件的第16行内容,再拼接上该文件的文件名和创建日期,最终将所有结果合并到一个新的文本/CSV文件中。

文件内容示例(所有文件格式统一)

BD  
C  
BEGIN_RUECKMELDUNG_FERTIGUNGAUFTRAG  
C  
ZA,MM,6  
MM,AT,1,10,1,1,,"JOBNAME",,,T  
MM,AT,1,20,1,1,,"ORDER_DESCRIPTION",,,T  
MM,AT,1,30,1,1,,"PROGRAM_NAME",,,T  
MM,AT,1,40,1,1,,"DESIRED_QTY",,,Z  
MM,AT,1,50,1,1,,"CURRENT_QTY",,,Z  
MM,AT,1,60,1,1,,"SHEET_RUNTIME",,,Z  
MM,AT,1,70,1,1,,"SUPPLY_STOCK_NAME",,,T  
MM,AT,1,80,1,1,,"BATCH_NUMBER",,,T  
C  
ZA,DA,1  
DA,'*','MACHINE','105759',1,1,869,'','*' <---- 需提取的行  
C  
ENDE_RUECKMELDUNG_FERTIGUNGAUFTRAG  
C  
ED

期望输出示例(5个文件合并结果)

DA,'*','MACHINE','105759',1,1,869,'','*',filename,creationdate
DA,'*','MACHINE','103423',1,1,234,'','*',filename,creationdate
DA,'*','MACHINE','102562',1,1,2552,'','*',filename,creationdate
DA,'*','MACHINE','105667',1,1,742,'','*',filename,creationdate
DA,'*','MACHINE','105355',1,1,7332,'','*',filename,creationdate

当前已实现代码(无法整合)

两段独立代码分别实现了合并全部文件内容、提取文件名和日期,但无法整合为完整功能,也不知道怎么提取第16行:

合并全部文件内容的代码

$folder = 'Z:\Brun\Test\maquina1'
$files = Get-ChildItem $folder\*.lst

Get-Content $files | Set-Content $folder\MergedTxtFileMaquina1.txt

提取文件名和日期的代码

$folder = 'Z:\Brun\Test\maquina1'
$files = Get-ChildItem $folder\*.lst

$files | Select Name,CreationTime,LastWriteTime

解决方案

直接使用以下整合后的PowerShell代码即可完成需求:

$folder = 'Z:\Brun\Test\maquina1'
$outputPath = Join-Path $folder "Merged_Results.csv"

# 遍历目标文件夹下的所有.lst文件
Get-ChildItem $folder\*.lst | ForEach-Object {
    # 读取文件前16行并提取第16行(数组索引从0开始,对应索引15)
    $targetLine = (Get-Content $_.FullName -TotalCount 16)[15]
    # 拼接内容:目标行 + 文件名 + 格式化后的创建日期
    "$targetLine,$($_.Name),$($_.CreationTime.ToString('yyyy-MM-dd HH:mm:ss'))"
} | Set-Content $outputPath -Encoding UTF8

代码说明

  • Get-ChildItem $folder\*.lst:获取目标文件夹内所有.lst格式的文件
  • (Get-Content $_.FullName -TotalCount 16)[15]:仅读取文件前16行(比读取整个文件更高效),通过索引15定位到第16行内容
  • $_.Name:获取当前处理文件的文件名
  • $_.CreationTime.ToString('yyyy-MM-dd HH:mm:ss'):将文件创建日期格式化为标准化字符串,避免特殊字符干扰
  • 最终将所有拼接好的行写入指定的输出文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 17:06:49