如何使用PowerShell单行命令过滤子目录CSV文件并以修改后的原文件名输出到过滤子目录
单行PowerShell命令实现方案
Get-ChildItem -Path 'C:\Users\me\Documents\' -Filter '*.csv' | ForEach-Object { $outDir = Join-Path $_.DirectoryName 'Filtered'; New-Item -ItemType Directory -Path $outDir -Force | Out-Null; Import-Csv $_.FullName | Where-Object { $_.Test -Match '^202[12]-A-[0-9]{4}$' } | Export-Csv -Path (Join-Path $outDir $_.Name) -NoTypeInformation -Encoding UTF8 -Force }
命令说明
- 遍历目标目录下所有csv文件逐个处理,避免多文件内容合并输出
- 自动创建
Filtered子目录,目录已存在时不会抛出错误 - 每个文件单独读取、按规则过滤,导出时保留原文件名存入
Filtered目录 - 修正原正则规则中多余的逗号,将
[1,2]改为[12],避免误匹配到逗号字符 - 导出时添加
-NoTypeInformation参数移除PowerShell默认插入的类型头,-Encoding UTF8保证跨平台编码兼容性,-Force支持覆盖已存在的同名输出文件
内容的提问来源于stack exchange,提问作者Bruce
相关产品推荐
相关产品推荐

