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

如何批量整理文件夹内PDF文件并按数字文件名规则分类归档到指定目录

PDF批量归档实现方案

核心实现思路

  • 优先选择Windows系统自带的PowerShell实现,无需安装第三方软件,适配Windows原生路径格式,稳定性高
  • 遍历Z:\PDF Archive\2010路径下所有后缀为.pdf的文件
  • 对每个文件名提取纯数字前缀,通过正则校验是否符合6/7位纯数字命名规则,不符合规则的文件自动跳过留待手动处理
  • 符合规则的文件名:6位的自动在左侧补0转为7位,7位的直接沿用
  • 根据7位数字生成两级归档目录:第一级目录取7位数字的前两位,拼接为XX00000-XX99999格式,第二级目录取7位数字的前三位,拼接为XXX0000-XXX9999格式
  • 自动递归创建不存在的目录,将原文件复制到对应归档路径,支持按需调整为移动文件模式

可直接运行的PowerShell脚本

# 定义源文件目录和归档根目录
$sourcePath = "Z:\PDF Archive\2010"
$archiveRoot = "Z:\PDF Archive"

# 遍历所有PDF文件
Get-ChildItem -Path $sourcePath -Filter *.pdf -File | ForEach-Object {
    $fileName = $_.BaseName
    $ext = $_.Extension

    # 校验文件名是否为纯6/7位数字
    if ($fileName -match '^\d{6,7}$') {
        # 左侧补0统一转为7位文件名
        $7bitName = $fileName.PadLeft(7, '0')
        # 计算两级归档目录名称
        $level1Prefix = $7bitName.Substring(0,2)
        $level1Dir = "$level1Prefix`00000-$level1Prefix`99999"
        $level2Prefix = $7bitName.Substring(0,3)
        $level2Dir = "$level2Prefix`0000-$level2Prefix`9999"
        
        # 拼接完整归档路径
        $targetDir = Join-Path -Path $archiveRoot -ChildPath "$level1Dir\$level2Dir"
        $targetFullPath = Join-Path -Path $targetDir -ChildPath "$7bitName$ext"

        # 自动创建目录,已存在的目录会直接跳过
        New-Item -Path $targetDir -ItemType Directory -Force | Out-Null

        # 复制文件,如需剪切移动直接把Copy-Item改为Move-Item即可
        Copy-Item -Path $_.FullName -Destination $targetFullPath -Force
        Write-Host "处理完成:$($_.Name) → $targetFullPath"
    }
    else {
        Write-Host "跳过非规则文件:$($_.Name)"
    }
}

注意事项

  • 首次运行建议先注释掉Copy-Item所在行,仅执行目录创建和路径打印逻辑,确认路径规则完全符合预期后再执行实际的文件复制操作
  • 脚本默认保留源路径的原文件,如需归档后删除源文件,将Copy-Item替换为Move-Item即可
  • 15000个文件的处理总耗时不超过1分钟,无性能瓶颈
  • 所有不符合6/7位纯数字命名规则的文件都会被单独打印出来,可在脚本运行完成后手动处理这批特殊文件

内容的提问来源于stack exchange,提问作者Bryan Bishop Pagenkopf

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:45:00