You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

批量修改Lot文件夹内PDF文件名:简化前缀脚本问题

批量给Lot类文件夹内PDF添加简化前缀的解决方案

我明白你现在的痛点:要给上千个Lot开头的文件夹里的PDF批量加简化前缀(比如Lot 1L1_),之前的脚本要么需要手动逐个文件夹运行,要么会出现第一个文件重复加前缀的问题。咱们来解决这个问题:

问题根源分析

你提供的论坛脚本出现重复前缀的问题,主要是因为没有启用延迟扩展导致变量更新不及时,加上调用子过程时的变量残留,使得第一个文件的前缀被重复赋值。

修正后的脚本

这个脚本会自动遍历所有Lot开头的文件夹,给里面的PDF添加正确的简化前缀,不会出现重复问题:

@echo off
setlocal enabledelayedexpansion

:: 遍历当前目录下所有以Lot开头的文件夹
for /f "delims=" %%a in ('dir /b /ad "Lot*"') do (
    :: 将文件夹名中的"Lot "替换为"L",生成简化前缀
    set "folder_name=%%a"
    set "prefix=!folder_name:Lot =L!"
    
    :: 遍历当前文件夹内的所有PDF文件
    for /f "delims=" %%b in ('dir /b /a-d "%%a\*.pdf"') do (
        :: 执行重命名操作(如果要预览效果,可改成echo ren)
        ren "%%a\%%b" "!prefix!_%%b"
    )
)

endlocal
echo 所有Lot文件夹内的PDF已完成前缀添加!
pause

脚本关键说明

  • 延迟扩展setlocal enabledelayedexpansion是核心,它让我们在循环代码块里用!变量!实时获取最新的变量值,避免了批处理默认的"代码块执行前变量展开"导致的错误。
  • 前缀生成:直接在循环内把Lot 1这类文件夹名替换成L1,不需要额外的子过程,减少出错环节。
  • 稳定遍历:用for /f配合dir命令遍历文件,比直接通配符遍历更稳定,能处理带空格或特殊字符的文件名。
  • 安全预览:如果担心误操作,可以先把ren改成echo ren,先打印所有要执行的重命名命令,确认无误后再去掉echo执行实际操作。

效果验证

  • 文件夹Lot 1内的map.pdf会被重命名为L1_map.pdf
  • 文件夹Lot A内的survey.pdf会被重命名为LA_survey.pdf
  • 完全跳过Block开头的文件夹,只处理Lot类文件夹

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

火山引擎 最新活动