PowerShell递归搜索特定文件/文件夹失败,请求适配修改
修正后的PowerShell命令方案
针对你的问题,以下是修正后的命令,解决长路径、特殊字符以及同时搜索文件和文件夹的问题:
$searchPath = '\\?\E:\Network Shares\Commun' $destinationRoot = "$home\desktop\conflits" # 同时搜索文件和文件夹,处理长路径与特殊字符 Get-ChildItem -LiteralPath $searchPath -Recurse -Force -File -Directory | Where-Object { $_.FullName -like '*(*case*' } | New-DestinationPath -CommonPath $searchPath -Destination $destinationRoot -WhatIf | Move-Item -LiteralPath { $_.Path } -Destination { $_.Destination } -WhatIf
关键修正点:
- 移除单一
-File参数,添加-Directory实现同时搜索文件和文件夹,原脚本仅检索文件,因此无法匹配你示例中的目标文件夹。 - 添加
-Force参数,确保能访问带有隐藏/系统属性的项目(若共享目录存在这类内容)。 - 调整
Where-Object为脚本块形式,避免属性绑定的潜在异常,保障匹配逻辑稳定生效。 - 保留
\\?\前缀,确保PowerShell正确处理超长路径(突破Windows传统260字符路径限制)。
额外注意事项:
- 特殊字符(如éèà)在PowerShell中默认支持,只要系统区域设置与控制台编码匹配,无需额外转义。
- 确认
New-DestinationPath自定义函数能适配文件夹路径转换逻辑,若该函数仅支持文件,需修改其逻辑以创建对应目录结构。 - 测试阶段保留
-WhatIf参数,确认移动路径无误后再移除,避免误操作。
内容的提问来源于stack exchange,提问作者Pristep
相关产品推荐
相关产品推荐

