You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell脚本使用-Include "*.pdf"未匹配特殊命名PDF文件问题

问题原因及解决办法

核心原因分析

1. -Recurse与-Include的搭配陷阱(最可能)

这是PowerShell的常见坑:当你用Get-ChildItem -Path $srcRoot -Recurse -Include "*.pdf"时,如果$srcRoot是具体目录路径(不带通配符),-Include只会过滤$srcRoot顶层目录的文件,递归遍历到的子目录里的文件不会被这个规则筛选。如果那两个文件在子目录中,自然会被漏掉。

2. 文件扩展名显示误导

如果你的系统开启了「隐藏已知文件类型的扩展名」,可能实际文件名是Thisismyfile.pdf2(扩展名是pdf2),但系统显示为Thisismyfile.pdf2.pdf,让你误以为文件名以.pdf结尾。这种情况下*.pdf肯定匹配不到。

3. 通配符逻辑澄清(排除项)

*.pdf是通配符,规则是匹配文件名以.pdf结尾的文件,而非文件名中包含.pdf的文件。你的这两个文件名最后确实是.pdf,所以这个不是问题所在。

解决办法

针对陷阱问题

  • 方法一:给Path参数加通配符,让-Include作用于所有递归文件:
    foreach ($file in Get-ChildItem -Path "$srcRoot\*" -File -Include "*.pdf" -Force -Recurse) {
        # 你的移动代码
    }
    
  • 方法二:改用-Filter参数(性能更好,递归时无需通配符路径):
    foreach ($file in Get-ChildItem -Path $srcRoot -File -Filter "*.pdf" -Force -Recurse) {
        # 你的移动代码
    }
    

针对扩展名显示问题

打开文件资源管理器,切换到「查看」选项卡,勾选「文件扩展名」,确认文件的实际后缀。如果实际是.pdf2,可以修改脚本的匹配规则为*.pdf2.pdf,或者根据需求调整。

内容的提问来源于stack exchange,提问作者Medium Rare

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 10:30:53