如何改进PDF合并Windows批处理文件:实现地图勘测PDF无条件移动至目标文件夹
如何改进PDF合并Windows批处理文件:实现地图勘测PDF无条件移动至目标文件夹
我来帮你搞定这个需求!其实只需要在现有批处理逻辑里加关键一步,就能实现不管有没有匹配的照片PDF,地图勘测文件都能无条件转移到目标文件夹;如果有对应照片,合并后的文件会自动覆盖单独的地图文件,完美契合你的要求。
下面是修改后的完整代码,我补全了截断的目标文件夹路径,还添加了关键注释方便你理解:
@echo off && setlocal enabledelayedexpansion :: 定义工具和路径配置 set "pdftk=C:\Program Files (x86)\PDFtk\bin\pdftk.exe" set "sourcemap=C:\GIS\Maps\Ranch Map Staging Folders\PCA\Central" set "sourcetables=C:\GIS\Maps\Ranch Map Staging Folders\PCA\Photos" set "destination=C:\GIS\Maps\Ranch Map Staging Folders\PCA\Combined" :: 补全目标文件夹路径 :: 确保目标文件夹存在,不存在则自动创建 md "%destination%" 2>nul :: 核心步骤:无条件将sourcemap中的所有PDF移动到目标文件夹 :: /Y参数强制覆盖同名文件,保证所有地图勘测PDF都能到达目标目录 move /Y "%sourcemap%\*.pdf" "%destination%\" >nul 2>&1 :: 处理有匹配照片的合并逻辑 :: 遍历照片文件夹中的PDF,寻找目标文件夹内的同名地图文件 for %%F in ("%sourcetables%\*.pdf") do ( set "filename=%%~nF" :: 检查目标文件夹是否存在对应的地图PDF(已经通过上面的步骤转移过来) if exist "%destination%\!filename!.pdf" ( :: 合并地图PDF与照片PDF,生成临时合并文件 "%pdftk%" "%destination%\!filename!.pdf" "%%F" cat output "%destination%\!filename!_merged.pdf" :: 删除原单独地图文件,将合并后的文件重命名为原文件名 del "%destination%\!filename!.pdf" ren "%destination%\!filename!_merged.pdf" "!filename!.pdf" :: 可选操作:合并完成后删除原照片文件,不需要可以注释掉这行 del "%%F" ) ) endlocal echo 处理完成! pause
关键改动说明:
- 新增了目标文件夹自动创建逻辑,避免因文件夹不存在导致操作失败
- 最核心的是添加了
move /Y "%sourcemap%\*.pdf" "%destination%\"这一行,直接强制转移所有地图PDF,这一步保证了无论有没有匹配照片,地图文件都会出现在目标目录 - 合并逻辑调整为从照片文件夹反向匹配已转移的地图文件,合并后替换原单独地图,确保最终目标目录里的文件要么是地图+照片的合并版,要么是单独的地图文件
备注:内容来源于stack exchange,提问作者George Bunkall
相关产品推荐
相关产品推荐

