找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
楼主: feiyan

[文件操作] [已解决]批处理按照顺序合并PDF 文件

[复制链接]
 楼主| 发表于 2023-10-5 19:19:57 | 显示全部楼层
回复 45# 77七 感谢,程序测试OK
发表于 2023-10-29 17:23:27 | 显示全部楼层
我试了一下,不行啊?只是把pdftk软件运行打开了,它不会自动合并pdf文件呀?请大神看看是什么原因?
发表于 2023-10-29 17:37:49 | 显示全部楼层
回复 21# 77七


    大神,我用批处理合并pdf文件,合并不了啊,只是运行了pdftk软件,不能自动合并啊?
发表于 2023-10-29 17:44:00 | 显示全部楼层
回复 48# yilianqiumeng


   你用的哪一楼的代码?我写的只是满足了楼主的按顺序要求,你试一下4、5楼站长的代码
发表于 2023-10-29 17:57:42 | 显示全部楼层
回复 49# 77七


    不行,我用了5楼的代码也只是运行pdftk软件,不会自动合并的。请大神看看有没有别的方法吧?给指导一下!谢谢
发表于 2023-10-29 18:14:28 | 显示全部楼层
回复 50# yilianqiumeng


   请完整描述一下需求吧,不知道你具体需要怎么合并
发表于 2023-10-29 18:58:25 | 显示全部楼层
回复 51# 77七


   我的问题和他的一样的:就是一键把每个文件夹内的pdf文件合并起来,手动合并太慢了!请大神指教!谢谢

1.在当前目录有多个文件夹,每个文件夹内有多个PDF 文件。
2.想把每个文件内的多个pdf 文件合并成一个pdf,存在在这个文件夹内,用这个文件夹名来命名这个合并PDF 文件。
举例,文件夹名称:S123     包含(1.pdf, 2.pdf, 3.pdf, 4.pdf,5.pdf)等多个pdf 文件,要求合并后文件名称是S123,
在当前目录下,这样类似的文件夹有多个。
发表于 2023-10-29 19:10:50 | 显示全部楼层
本帖最后由 77七 于 2023-10-29 19:11 编辑

回复 52# yilianqiumeng


  
  1. @echo off
  2. rem 批处理保存为ansi编码格式
  3. cd /d "%~dp0"
  4. for /f "delims=" %%i in ('dir /b /ad') do (
  5.     pushd "%%i"
  6.     echo 正在处理文件夹:%%i
  7.     "d:\新建文件夹\pdftk.exe" *.pdf cat output "%%~nxi.pdf"
  8.     popd
  9. )
  10. pause
复制代码
可能你的path的路径没设置对吧,修改了下5楼代码,在代码中直接写pdftk路径,自行修改为实际路径,批处理文件放在 “当前目录”下
发表于 2024-7-30 15:40:25 | 显示全部楼层
回复 53# 77七


    大佬实在太牛了,解决了痛点
发表于 2024-9-27 10:14:26 | 显示全部楼层
回复 45# 77七


    第二段代码是给PDF文件以文件名添加书签用的,但是还是要每一个文件夹去复制粘贴并运行一次,能不能将两段代码合并成一个,实现自动添加标签自动合并?
请大佬帮帮我,万分感谢!!
发表于 2024-9-27 13:32:50 | 显示全部楼层
回复 55# ailier532

遍历批处理文件所在目录下所有文件夹,添加书签后合并,删除源文件、及添加书签后的文件、空文件夹。使用前先备份。
  1. @echo off
  2. chcp 65001 >nul
  3. rem 批处理保存为utf-8编码格式
  4. cd /d "%~dp0"
  5. rem 仅给无书签的pdf文件添加文件名作为书签(part) ,所有文件添加(all)
  6. set "c=all"

  7. for /d %%d in (*) do (
  8.         if exist "%%d\*.pdf" (
  9.                 pushd "%%d"
  10.                 for /f "delims=" %%i in ('dir /b /a-d *.pdf') do (
  11.                         pdftk "%%i" dump_data_utf8 output >$
  12.                         setlocal
  13.                         if /i "%c%" equ "all" (
  14.                                 call :1 "%%i"
  15.                         ) else if /i "%c%" equ "part" (
  16.                                 find "BookmarkTitle:" <$ 1>nul || call :1 "%%i"
  17.                         )
  18.                         endlocal
  19.                 )
  20.                 pdftk *.pdf cat output "%~dp0%%~nxd.pdf"
  21.                 rem 删除pdf
  22.                 del *.pdf 2>nul
  23.                 del $;report.txt 2>nul
  24.                 popd
  25.                 rd "%%d" 2>nul
  26.         )
  27. )
  28. pause & exit

  29.         :1
  30.         for /f "tokens=1* delims=[]" %%a in ('find /n "NumberOfPages: " ^<$') do (
  31.                 set #%%a=1
  32.         )
  33.         (for /f "tokens=1* delims=[]" %%a in ('find /n /v "" ^<$') do (
  34.                 echo=%%b
  35.                 if defined #%%a (
  36.                         echo BookmarkBegin
  37.                         echo BookmarkTitle: %~n1
  38.                         echo BookmarkLevel: 1
  39.                         echo BookmarkPageNumber: 1
  40.                 )
  41.         ))>report.txt
  42.         pdftk "%~1" update_info_utf8 report.txt output $.pdf
  43.         move $.pdf "%~1"
  44.         exit /b
复制代码
发表于 2024-9-27 14:57:37 | 显示全部楼层
回复 56# 77七


    pdftk'is not recognized as an
internal or external command,
operable program or batch file.
我把PDFTK放在BAT一个目录下的啊
发表于 2024-9-27 15:05:43 | 显示全部楼层
回复 57# ailier532




参考 https://jingyan.baidu.com/article/b907e627b5b4b707e7891cc1.html 添加到环境变量

或者写明 pdftk.exe 的路径,多处pdftk都要修改,
  1. "d:\pdftk\pdftk.exe" *.pdf cat output "%~dp0%%~nxd.pdf"
复制代码
发表于 2024-9-27 15:33:28 | 显示全部楼层
回复 58# 77七


    通过改环境变量搞定,测试成功!膜拜大佬!非常感谢!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 18:40 , Processed in 0.025121 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表