PowerShell如何从多个dat文件提取第10行并汇总导出为单个CSV
修正后可直接运行的完整脚本
Get-ChildItem -Path C:\Users\pitters\Folder -Filter *.dat -Recurse | ForEach-Object { # 读取当前遍历到的dat文件内容,提取第10行 $tenthLine = Get-Content -Path $_.FullName | Select-Object -Skip 9 -First 1 # 构造结构化对象便于导出CSV [PSCustomObject]@{ 源文件名 = $_.Name 文件完整路径 = $_.FullName 第10行内容 = $tenthLine } } | Export-Csv -Path C:\Users\pitters\Folder\output.csv -Encoding UTF8 -NoTypeInformation
错误修复说明
- 原脚本
Get-ChildItem命令后缺少管道符|,无法将检索到的dat文件传递给后续处理逻辑,同时用-Filter代替-Include匹配后缀,执行效率更高 - 补充了缺失的
Get-Content步骤,通过$_.FullName获取当前遍历文件的完整路径来读取内容 - 新增结构化对象字段,除了提取到的第10行内容外,还保留了文件源信息,便于后续核对数据
- 给
Export-Csv补充了绝对路径、UTF8编码、-NoTypeInformation参数,避免CSV出现冗余头部信息和中文乱码问题
补充说明
如果你的dat文件使用非UTF8编码存储,可以给Get-Content增加-Encoding参数指定对应编码,比如-Encoding Default调用系统默认编码读取文件。
内容的提问来源于stack exchange,提问作者Pitmo
相关产品推荐
相关产品推荐

