如何修改PowerShell脚本,输出含文件名及符合条件的行
PowerShell脚本实现:筛选多文件指定列并附带文件名
直接用以下脚本即可实现需求,整合文件遍历与行筛选逻辑:
Get-ChildItem -Path "你的目标文件夹路径" -Filter "SMAN_2023.xyz" | ForEach-Object { $currentFile = $_.Name Get-Content $_.FullName | ForEach-Object { # 若文件无表头,删除此行 if ($_ -match '^#|^[A-Za-z]+') { return } $columns = $_ -split '\s+' | Where-Object { $_ -ne '' } if ($columns.Count -ge 4 -and [double]$columns[3] -gt 0.01) { # 自定义输出格式,可按需修改 "$currentFile | $_" } } } | Out-File "筛选结果.txt" -Encoding UTF8
关键逻辑说明
- 文件遍历:
Get-ChildItem精准定位目标文件夹下所有SMAN_2023.xyz格式文件 - 文件名记录:通过
$_.Name获取当前处理的文件名,确保输出时能关联到对应文件 - 行筛选:
- 跳过表头行(匹配以
#或字母开头的行,无需则删除该行判断) - 按空白符分割行内容,过滤空元素避免列索引错误
- 验证列数足够后,将第4列(索引
3,PowerShell为0起始)转为数值类型,与0.01做比较 - 符合条件的行拼接文件名后输出
- 跳过表头行(匹配以
- 结果保存:用
Out-File将最终结果写入文本文件,避免控制台溢出
调整建议
- 替换
"你的目标文件夹路径"为实际路径,如"D:\XYZ_Data" - 若文件用逗号/分号分隔列,将
-split '\s+'改为-split ','或-split ';' - 可修改输出格式,例如改为
"[$currentFile] $_"或"$currentFile,$_"方便后续导入表格工具
内容的提问来源于stack exchange,提问作者Nikolo
相关产品推荐
相关产品推荐

