如何修改批处理脚本实现双PDF文件大小校验及达标打印?
批处理脚本修改:多PDF文件大小校验与自动打印
问题描述
我每日通过脚本(借助wkhtmltopdf工具)生成两个PDF文件,路径分别为folder1\dailyreport1.pdf和folder2\dailyreport2.pdf。需求是当文件大小超过9000字节时自动打印该文件,现有批处理脚本仅支持单个PDF文件的大小校验,需修改脚本实现对两个文件的分别校验及达标打印。
文件结构
folder1\dailyreport1.pdf folder2\dailyreport2.pdf
当前批处理脚本
@Echo off setlocal enabledelayedexpansion set file=folder1\dailyreport1.pdf ::set file=folder2\dailyreport2.pdf set "minsize=9000" For %%I In (%file%)Do ( set "size=%%~zI" if %%~zI LSS 9000 call :NOPRINT if %%~zI GTR 9000 call :PRINT ) :NOPRINT echo Size %size% ^< %minsize%, skipped print %file% goto SHUTDOWN :PRINT echo Size %size% ^> %minsize%, print %file% :SHUTDOWN echo shutdown.exe -s -t 600 PAUSE
修改后的脚本
@Echo off setlocal enabledelayedexpansion :: 定义需要校验的多个PDF文件,用空格分隔路径 set "files=folder1\dailyreport1.pdf folder2\dailyreport2.pdf" set "minsize=9000" :: 遍历每个文件进行独立校验 for %%I in (%files%) do ( set "current_file=%%I" set "file_size=%%~zI" :: 判断文件大小并执行对应操作 if !file_size! LSS %minsize% ( echo Size !file_size! ^< %minsize%, skipped print !current_file! ) else if !file_size! GTR %minsize% ( echo Size !file_size! ^> %minsize%, print !current_file! :: 替换为实际打印命令,示例:调用系统打印功能 :: rundll32.exe printui.dll,PrintUIEntry /n "你的打印机名称" /p /f "!current_file!" ) ) echo shutdown.exe -s -t 600 PAUSE
修改关键点说明
- 多文件遍历:将单个文件变量改为包含双文件路径的
files变量,用空格分隔,让for循环逐个处理每个文件。 - 修正变量作用域:使用
!变量名!(延迟扩展)在循环内正确获取当前文件的路径和大小,避免变量值被后续循环覆盖。 - 简化逻辑结构:去掉原脚本中易导致循环中断的子过程跳转,直接在循环内完成判断和输出,确保两个文件都能被处理。
- 预留打印命令位:在达标打印的分支中添加了打印命令注释,可根据实际打印机配置替换为真实指令。
内容的提问来源于stack exchange,提问作者amein
相关产品推荐
相关产品推荐

