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

如何修改批处理脚本实现双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

修改关键点说明

  1. 多文件遍历:将单个文件变量改为包含双文件路径的files变量,用空格分隔,让for循环逐个处理每个文件。
  2. 修正变量作用域:使用!变量名!(延迟扩展)在循环内正确获取当前文件的路径和大小,避免变量值被后续循环覆盖。
  3. 简化逻辑结构:去掉原脚本中易导致循环中断的子过程跳转,直接在循环内完成判断和输出,确保两个文件都能被处理。
  4. 预留打印命令位:在达标打印的分支中添加了打印命令注释,可根据实际打印机配置替换为真实指令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 06:18:20