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

如何遍历文件夹中的子文件夹,排除目录内的单个文件?

批量跳过指定类型/文件的更高效方法

Python 实现

  • 按文件后缀批量跳过:用pathlib或os.walk结合后缀集合判断,不用逐个列文件名,代码更简洁:
    from pathlib import Path
    
    # 定义要跳过的文件后缀
    skip_suffixes = {'.lnk', '.pptx', '.xlsx', '.docx'}
    target_dir = Path('你的目标文件夹路径')
    
    for item in target_dir.rglob('*'):
        # 如果是文件且后缀在跳过列表里,直接跳过
        if item.is_file() and item.suffix in skip_suffixes:
            continue
        # 这里处理你需要保留的文件/文件夹
        print(item)
    
  • 跳过特定文件名:把要跳过的文件名存在集合里(集合查找比列表快得多),判断时直接匹配:
    skip_names = {'文件1.docx', '快捷方式.lnk', '报表.xlsx'}
    for item in target_dir.rglob('*'):
        if item.is_file() and item.name in skip_names:
            continue
        # 后续处理逻辑
    

PowerShell 实现

  • 利用原生命令的过滤参数直接排除指定类型:
    $skipSuffixes = @('.lnk', '.pptx', '.xlsx', '.docx')
    Get-ChildItem -Path "你的目标文件夹路径" -Recurse | Where-Object {
        # 保留文件夹,同时排除指定后缀的文件
        $_.PSIsContainer -or $_.Extension -notin $skipSuffixes
    }
    
  • 跳过特定文件名:
    $skipNames = @('文件1.docx', '快捷方式.lnk', '报表.xlsx')
    Get-ChildItem -Path "你的目标文件夹路径" -Recurse | Where-Object {
        $_.PSIsContainer -or $_.Name -notin $skipNames
    }
    

命令提示符(CMD)

  • 用for /r循环结合findstr反向过滤指定后缀:
    for /r "你的目标文件夹路径" %f in (*) do @echo %f | findstr /v /i "\.lnk$\|\.pptx$\|\.xlsx$\|\.docx$"
    
    注:/v表示反向匹配,只输出不符合后缀规则的文件;/i表示忽略大小写。

核心优化点

  1. 按后缀过滤优先:如果是同一类型的文件,直接用后缀匹配比列单个文件名高效得多,代码也更易维护;
  2. 用集合存跳过项:不管是后缀还是文件名,用集合(Python)或哈希表(PowerShell)存储,查找速度远快于列表,文件数量大时差异明显;
  3. 利用工具原生功能:各语言/命令行工具都有内置的过滤、排除参数,直接调用比自己写遍历判断更简洁高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 06:18:24