Powershell递归复制内容含'OBR|101|'的文件到单个文件夹问题排查
PowerShell 脚本修改方案
原脚本问题说明
- 匹配规则冲突:你使用了
-SimpleMatch参数启用字面量匹配,不需要对管道符|添加转义符\,原脚本中的"OBR\|101\|"会被识别为包含反斜杠的字符串,无法匹配到目标内容OBR|101|。 - 未做去重处理:如果单个文件内存在多处匹配内容,
Select-String会返回多条对应结果,直接传给复制命令会导致重复执行复制操作。
修正后脚本
方案1:保留字面量匹配(推荐)
Get-ChildItem -Path \\sourcefolder -Recurse -File | Select-String -Pattern "OBR|101|" -SimpleMatch | Select-Object -Unique Path | Copy-Item -Destination \\destinationfolder
方案2:使用正则匹配
如果不需要字面量匹配,去掉-SimpleMatch参数,保留正则转义即可:
Get-ChildItem -Path \\sourcefolder -Recurse -File | Select-String -Pattern "OBR\|101\|" | Select-Object -Unique Path | Copy-Item -Destination \\destinationfolder
改动说明
- 修正了匹配字符串的写法,和
-SimpleMatch参数逻辑对齐 - 新增
Select-Object -Unique Path步骤,提取匹配文件路径并去重,保证每个符合要求的文件仅复制一次
内容的提问来源于stack exchange,提问作者pee2pee
相关产品推荐
相关产品推荐

