批量将指定根目录下子文件夹内JPG文件合并为同名PDF并删除原文件的批处理脚本需求
批量将指定根目录下子文件夹内JPG文件合并为同名PDF并删除原文件的批处理脚本需求
嗨,我来帮你搞定这个批处理脚本的需求!先明确一下你的核心诉求:
- 给定根目录(比如
C:\ROOT),自动遍历里面所有子文件夹 - 每个子文件夹里的JPG按现有命名顺序合并成和文件夹同名的PDF,存在该子文件夹里
- 合并成功后删除对应文件夹里的所有JPG文件
前提准备
首先你需要安装ImageMagick(Windows自带命令行没有直接合并JPG到PDF的工具),安装时记得勾选「Add application directory to your system PATH」,这样脚本里能直接调用magick命令;如果没勾选,后面脚本里要替换成magick.exe的完整路径(比如"C:\Program Files\ImageMagick-7.x.x\magick.exe")。
批处理脚本
直接用下面的脚本,注释已经写得很清楚,你可以根据需要调整:
@echo off setlocal enabledelayedexpansion :: 可选:直接指定根目录,不用手动输入的话,把下面这行解开注释,删掉set /p那部分 :: set "root_dir=C:\ROOT" :: 提示用户输入根目录路径 set "root_dir=" set /p "root_dir=请输入根目录路径(例如C:\ROOT):" :: 检查输入的根目录是否存在 if not exist "%root_dir%" ( echo ❌ 错误:指定的根目录不存在,请检查路径后重试! pause exit /b 1 ) echo 🚀 开始处理根目录:%root_dir% echo -------------------------- :: 遍历根目录下的所有子文件夹 for /d %%d in ("%root_dir%\*") do ( echo 正在处理文件夹:%%~nd :: 定义PDF文件名(和文件夹同名) set "pdf_filename=%%~nd.pdf" set "pdf_fullpath=%%d\!pdf_filename!" :: 使用ImageMagick按顺序合并JPG到PDF magick "%%d\*.jpg" "!pdf_fullpath!" :: 检查PDF是否生成成功 if exist "!pdf_fullpath!" ( echo ✅ 已生成PDF:!pdf_fullpath! :: 删除当前文件夹下的所有JPG文件(/q表示安静删除,无需确认) del /q "%%d\*.jpg" echo 🗑️ 已删除该文件夹下的所有JPG文件 ) else ( echo ⚠️ 警告:未能生成%%~nd的PDF文件,跳过删除JPG操作 ) echo -------------------------- ) echo 🎉 所有文件夹处理完成! pause exit /b 0
关键说明
- 延迟变量扩展:
setlocal enabledelayedexpansion是必须的,因为在for循环里需要动态获取pdf_fullpath这类变量的实时值 - 排序问题:你的JPG已经是
File0001.jpg这种带前导零的命名,系统会自动按正确的数字顺序排序,magick命令会按这个顺序合并,完全符合你的需求 - 容错处理:脚本加了根目录检查、PDF生成成功检查,避免误删文件
- 保留JPG:如果不想删除原JPG,把
del /q "%%d\*.jpg"这一行注释掉(前面加::)就行
备注:内容来源于stack exchange,提问作者Enrico Priotti
相关产品推荐
相关产品推荐

