ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

文件管理必备!一键批量校验各类文件编号连续性缺失的BAT自动化脚本方案

文件管理必备!一键批量校验各类文件编号连续性缺失的BAT自动化脚本方案 在日常的档案数字化、自动化报告生成或批量文件处理工作中我们经常会遇到一种情况系统或软件根据条目自动生成一系列以数字序号如01,02,03...开头的PDF文件。然而一旦源数据条目出错生成的PDF序列就可能出现起始序号错误如直接从12开始或编号跳号如08直接到10的问题。人工在成百上千个子文件夹中逐一核对不仅效率低下而且极易出错。本文将提供一个高效的Windows批处理脚本帮助你一键完成PDF等文件编号连续性的校验工作。一、 问题场景与解决方案概述场景描述文件夹结构一个主文件夹下包含多个子文件夹代表不同的“批号”。文件格式每个子文件夹内包含若干以01XXX.pdf,02XX.pdf...格式命名的PDF文件。核心需求快速检查每个子文件夹内的PDF文件其序号是否从01开始连续以及是否存在文件缺失。解决方案对比人工核对耗时费力不可靠。编写专用程序灵活但需要开发环境。使用批处理脚本轻量、无需安装、即改即用完美匹配此类系统管理任务。本文将提供两个版本的BAT脚本满足不同场景需求。视频演示10万个文件一个bat脚本10分钟找出所有错误二、 脚本代码与详细解析我们根据子文件夹数量即检验规模提供两个版本的脚本。版本一即时显示版适合文件夹数量较少时此脚本会将检查结果直接输出在命令提示符窗口方便即时查看。echo offsetlocal enabledelayedexpansionset /p path请输入检验路径cd /d %path%set errornum0for /d %%i in (*) do (pushd %%iset num0set p0for %%m in (*.pdf) do (set /a p1set str%%~nmset str!str:~0,2!if !str! gtr !num! (set num!str!))echo %%i共 !p! 个PDF文件最大序号为 !num! echo.if !p! equ 0 (echo %%iPDF文件个数为0 echo.set /a errornum1)if !num! lss 10 (set num!num:0 !)if !p! neq !num! (echo %%iPDF文件有缺失 echo.set /a errornum1)popd)echo. echo ---------------------------------)if errornum0 (echo. echo ---------------------------------echo 查询完毕未发现错误echo. echo ---------------------------------) else (echo. echo --------------------------------- echo.echo 查询完毕共发现 !errornum! 处错误echo. echo ---------------------------------)pauseecho off setlocal enabledelayedexpansion set batpath%cd% set /p path请输入检验路径 cd /d %path% set errornum0 echo 正在检测前耐心等待...... for /d %%i in (*) do ( pushd %%i set num0 set p0 for %%m in (*.pdf) do ( set /a p1 set str%%~nm set str!str:~0,2! if !str! gtr !num! ( set num!str! ) ) echo %%i共 !p! 个PDF文件最大序号为 !num!%batpath%\1.txt if !p! equ 0 ( echo %%iPDF文件个数为0%batpath%\1.txt set /a errornum1 ) if !num! lss 10 ( set num!num:0 ! ) if !p! neq !num! ( echo %%i共 !p! 个PDF文件最大序号为 !num!PDF文件有缺失%batpath%\1.txt set /a errornum1 ) popd ) echo ---------------------------------%batpath%\1.txt ) if errornum0 ( echo ---------------------------------%batpath%\1.txt echo 查询完毕未发现错误%batpath%\1.txt echo ---------------------------------%batpath%\1.txt ) else ( echo ---------------------------------%batpath%\1.txt echo 查询完毕共发现 !errornum! 处错误%batpath%\1.txt echo ---------------------------------%batpath%\1.txt ) echo 检测完成 pause核心逻辑解析for /d循环遍历所有子文件夹。set str%%~nm和set str!str:~0,2!提取PDF文件名的前两个字符作为序号。if !p! neq !num!核心判断。!p!是实际PDF文件数量!num!是最大的序号值。在理想连续情况下两者应相等。若不相等则说明序号不连续。if !p! equ 0额外检查文件夹是否为空。errornum用于统计发现的问题总数。版本二输出到文件版适合文件夹数量庞大时当需要校验的文件夹非常多时命令行窗口可能无法完整显示所有结果。此脚本将详细结果写入同级目录下的1.txt文件方便后续审计和查看。echo offsetlocal enabledelayedexpansionset batpath%cd%set /p path请输入检验路径cd /d %path%set errornum0echo 正在检测前耐心等待......for /d %%i in (*) do (pushd %%iset num0set p0for %%m in (*.pdf) do (set /a p1set str%%~nmset str!str:~0,2!if !str! gtr !num! (set num!str!))echo %%i共 !p! 个PDF文件最大序号为 !num!%batpath%\1.txtif !p! equ 0 (echo %%iPDF文件个数为0%batpath%\1.txtset /a errornum1)if !num! lss 10 (set num!num:0 !)if !p! neq !num! (echo %%i共 !p! 个PDF文件最大序号为 !num!PDF文件有缺失%batpath%\1.txtset /a errornum1)popd)echo ---------------------------------%batpath%\1.txt)if errornum0 (echo ---------------------------------%batpath%\1.txtecho 查询完毕未发现错误%batpath%\1.txtecho ---------------------------------%batpath%\1.txt) else (echo ---------------------------------%batpath%\1.txtecho 查询完毕共发现 !errornum! 处错误%batpath%\1.txtecho ---------------------------------%batpath%\1.txt)echo 检测完成pauseecho off setlocal enabledelayedexpansion set batpath%cd% set /p path请输入检验路径 cd /d %path% set errornum0 echo 正在检测前耐心等待...... for /d %%i in (*) do ( pushd %%i set num0 set p0 for %%m in (*.pdf) do ( set /a p1 set str%%~nm set str!str:~0,2! if !str! gtr !num! ( set num!str! ) ) echo %%i共 !p! 个PDF文件最大序号为 !num!%batpath%\1.txt if !p! equ 0 ( echo %%iPDF文件个数为0%batpath%\1.txt set /a errornum1 ) if !num! lss 10 ( set num!num:0 ! ) if !p! neq !num! ( echo %%i共 !p! 个PDF文件最大序号为 !num!PDF文件有缺失%batpath%\1.txt set /a errornum1 ) popd ) echo ---------------------------------%batpath%\1.txt ) if errornum0 ( echo ---------------------------------%batpath%\1.txt echo 查询完毕未发现错误%batpath%\1.txt echo ---------------------------------%batpath%\1.txt ) else ( echo ---------------------------------%batpath%\1.txt echo 查询完毕共发现 !errornum! 处错误%batpath%\1.txt echo ---------------------------------%batpath%\1.txt ) echo 检测完成 pause三、 使用教程Step-by-Step准备脚本将上述任一版本的代码复制到记事本中。保存文件将文件另存为编码选择 ANSI文件名例如check_pdf_sequence.bat注意后缀必须是.bat。运行脚本双击运行check_pdf_sequence.bat。输入路径在弹出窗口输入需要检查的主文件夹的完整路径如D:\数字化档案然后按回车。查看结果版本一结果直接显示在黑框窗口中。版本二脚本运行完毕后在同目录下会生成一个1.txt文件所有详细结果都记录在里面。筛选打印把1.txt中的内容复制到Excel中筛选出全部错误信息并打印作为检验报告。将此报告交给相关人员作为修正的依据。四、 扩展与优化建议本脚本是一个强大的起点你可以根据自身需求轻松修改修改文件格式将*.pdf改为*.jpg或*.tif即可用于校验图片序列。调整序号长度如果序号是3位如001将set str!str:~0,2!改为set str!str:~0,3!。自定义输出修改echo语句调整输出结果的格式或语言。静默运行删除脚本末尾的pause命令实现运行后自动关闭窗口。五、视频演示文件管理必备批量校验各类文件编号连续性缺失的BAT自动化方案六、 结语这个简单的批处理脚本将原本可能需要数小时的人工核查工作缩短到几秒钟之内并且结果准确无误。它充分体现了用自动化思维解决重复性工作的价值。希望这个脚本能切实提升你的工作效率。如果你在使用中遇到任何问题或有更好的改进想法欢迎在评论区留言交流计算机科学与技术 计算机网络技术双专业课程体系完全导航指南
返回列表