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

编写Bat脚本批量删除PDF文件名中任意三位大写代码后的内容

批量重命名PDF文件的Bat脚本优化方案

针对你遇到的批量重命名需求,以下是适配任意三位大写代码、避免误删问题的Bat脚本:

@echo off
setlocal enabledelayedexpansion

:: 遍历当前目录下所有PDF文件
for %%f in (*.pdf) do (
    set "filename=%%~nf"
    set "extension=%%~xf"
    set "newName="
    set "found=0"

    :: 从后往前查找最后一个"-"的位置,定位三位大写代码
    for /l %%i in (0,1,50) do (
        if !found! equ 0 (
            set "char=!filename:~-%%i,1!"
            if "!char!"=="-" (
                :: 提取"-"后面的三位字符,判断是否为大写字母
                set "code=!filename:~-%%i+1,3!"
                echo !code! | findstr /r "^[A-Z][A-Z][A-Z]$" >nul
                if !errorlevel! equ 0 (
                    :: 截取到三位代码结尾的部分作为新文件名
                    set "newName=!filename:~0,-%%i+4!"
                    set "found=1"
                )
            )
        )
    )

    :: 如果找到符合条件的代码,执行重命名
    if defined newName (
        if not "!newName!!extension!"=="%%f" (
            :: 先打印预览,确认无误后替换成 ren
            echo ren "%%f" "!newName!!extension!"
            :: ren "%%f" "!newName!!extension!"
        )
    )
)

endlocal
pause

脚本说明

  • 启用delayedexpansion实现循环内的变量动态更新
  • 从文件名末尾向前遍历,精准定位最后一个「-」,避免前面内容中的「-」干扰
  • 通过findstr正则匹配验证「-」后是否为三位大写字母,确保只处理符合格式的文件
  • 默认只打印重命名命令(echo ren),确认预览结果无误后,再注释掉echo执行实际重命名

注意事项

  1. 先将脚本放在PDF文件所在文件夹执行预览,确认新文件名符合要求
  2. 如果文件名长度超过50字符,可调整for /l循环的上限(把50改成更大的数值)
  3. 若存在重名文件,脚本会自动跳过(避免覆盖)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 18:40:02