完善批量重命名每日PDF收据的批处理脚本需求
批量重命名PDF收据脚本(支持多文件+跳过空文件)
嘿,我帮你把这个批处理脚本调整到位了,完全适配你的需求:循环处理所有PDF、逐个询问对应收据号,还能自动跳过无收据的空PDF文件。先上修改后的完整代码:
@echo off setlocal enabledelayedexpansion :: 遍历当前目录下所有PDF文件 for %%a in ("*.pdf") do ( :: 跳过大小为0的空PDF文件 if %%~za equ 0 ( echo 🚫 跳过空PDF文件: %%~nxa goto nextfile ) :: 提示当前待处理文件,询问收据号 echo 📄 当前处理文件: %%~nxa set /p "str=请输入该文件对应的收据号(直接回车可跳过此文件): " :: 用户未输入收据号时,跳过重命名 if "!str!"=="" ( echo ⏭️ 未输入收据号,跳过此文件 goto nextfile ) :: 生成新文件名并执行重命名 set "newname=%%~Na!str!%%~Xa" echo 🔍 预览重命名: %%~nxa → !newname! ren "%%~a" "!newname!" echo ✅ 已完成重命名: !newname! :nextfile ) echo 🎉 所有文件处理完成! pause
关键功能说明:
- 延迟变量扩展:
setlocal enabledelayedexpansion解决了批处理循环中变量实时读取的问题,确保用户输入的收据号能正确传递到重命名逻辑里。 - 自动跳过空PDF:通过
%%~za获取文件大小,直接跳过0字节的空文件,不用再手动筛选。 - 灵活的收据号输入:每个PDF文件都会单独询问收据号,如果不需要重命名某个文件,直接回车就能跳过,完美适配“跳过无收据文件”的需求。
- 匹配示例命名规则:完全按照你给的示例,把收据号追加到原文件名的前缀后,比如
01May2019-Fine-CS0000.pdf会变成01May2019-Fine-CS00005680.pdf。 - 可视化提示:加入了简单的 emoji 提示,让你更清楚当前的处理状态,避免操作混乱。
内容的提问来源于stack exchange,提问作者amein
相关产品推荐
相关产品推荐

