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

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

1.在当前目录有多个文件夹,每个文件夹内有多个PDF 文件。
2.想把每个文件内的多个pdf 文件合并成一个pdf,存在在这个文件夹内,用这个文件夹名来命名这个合并PDF 文件。

举例,文件夹名称:S123     包含(1.pdf, 2.pdf, 3.pdf, 4.pdf,5.pdf)等多个pdf 文件,要求合并后文件名称是S123,
在当前目录下,这样类似的文件夹有多个。
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

  1. @echo off
  2. rem 站内下载pdftk,修改为实际路径
  3. set "pdftk=C:\PDFtk\PDFtk\pdftk.exe"
  4. for /d %%d in (*) do (
  5. pushd "%%d"
  6. setlocal enabledelayedexpansion
  7. for /f "delims=" %%a in ('dir /b /a-d *.pdf ^|findstr /vbc:"S" /vbc:"D C F" /vbc:"D C S" /vbc:"D P" /vbc:"D F"') do (
  8. set "str=!str! "%%a""
  9. )
  10. "%pdftk%" "S*.pdf" "D C F*.pdf" "D C S*.pdf" !str! "D P*.pdf" "D F*.pdf" cat output "%%~nxd.pdf"
  11. endlocal
  12. popd
  13. )
  14. pause
复制代码
bat小白,请多指教!谢谢!

TOP

回复 2# 77七


    findstr的这些条件是为了满足顶楼的哪个需求?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 1# feiyan


test-1.bat
  1. @echo off
  2. REM 1、下载命令行工具PDFtk
  3. REM http://bcn.bathome.net/s/tool/index.html?key=PDFtk
  4. REM 2、根据自己电脑实际安装路径设置以下临时环境变量
  5. set "path=C:\Program Files (x86)\PDFtk Server\bin;%path%"
  6. cd /d "%~dp0"
  7. for /d %%i in (*) do (
  8.     pushd "%%i"
  9.     echo 正在处理文件夹:%%i
  10.     pdftk.exe *.pdf cat output "%%~nxi.pdf"
  11.     popd
  12. )
  13. pause
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 1# feiyan


test-2.bat
  1. @echo off
  2. REM 1、下载命令行工具PDFtk
  3. REM http://bcn.bathome.net/s/tool/index.html?key=PDFtk
  4. REM 2、根据自己电脑实际安装路径设置以下临时环境变量
  5. set "path=C:\Program Files (x86)\PDFtk Server\bin;%path%"
  6. cd /d "%~dp0"
  7. for /f "delims=" %%i in ('dir /b /ad') do (
  8.     pushd "%%i"
  9.     echo 正在处理文件夹:%%i
  10.     pdftk.exe *.pdf cat output "%%~nxi.pdf"
  11.     popd
  12. )
  13. pause
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 3# Batcher
站长,是这样的,楼主编辑了顶楼,把需求改简单了,之前是根据文件名开头指定了顺序合并,考虑楼主问题未解决,我就把原始需求的代码发上来了。
bat小白,请多指教!谢谢!

TOP

回复 2# 77七
感谢77,当时我发现我描述的有点复杂,怕难以实现,后来就重新编辑了下,把要求变的简单点了,
其实我发现只要在  pdftk *.pdf  cat   (这个地方,使用首字母加通配符也可以达到我的要求,和你的思路有点类似,但是我的三角猫技术,不会把合并后的文件名称变成和文件夹名称一致。也不会把所有的文件夹都这样操作
你这个我跑了下,无法成功。

TOP

回复 5# Batcher
感谢管理员batcher, 我拷贝试了下,无法成功,我还怕我的路径和你的不一样,特地在 bin 添加\pdftk.exe, 添加这个和不添加这个,我都试了下,还是无法成功
但是我使用最小白的方式,是可以合并的,证明我的软件是可以起作用的。(pdftk.exe *.pdf cat output 11.pdf)

TOP

回复 7# feiyan

提示什么?
   把批处理保存为ansi编码格式,试试。
bat小白,请多指教!谢谢!

TOP

回复 8# feiyan


请参考Q-04把bat文件保存为ANSI编码:
https://mp.weixin.qq.com/s/Koje4FufWxWBs7ioDy_LJA
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 10# Batcher
感谢,是我失误了,我把这个批处理放在这个文件夹里面,难怪一直不成功,放在外面就OK了

TOP

回复 9# 77七
是我失误了,我把这个批处理放在文件夹里面了,所以一直不成功,放在外面就OK 了,感谢

TOP

回复 2# 77七


    @77七  77你好,是这样的,这个我用这个代码尝试下,发现最后会多合并几个文件进去,就是之前已经被定义顺序的这几个文件,也就是在( !str! )之前的几个文件名,最后还是会被重复合并到整个文件中。

TOP

回复 13# feiyan


  
  1. @echo off
  2. rem 站内下载pdftk,修改为实际路径
  3. set "pdftk=C:\PDFtk\PDFtk\pdftk.exe"
  4. for /d %%d in (*) do (
  5. pushd "%%d"
  6. setlocal enabledelayedexpansion
  7. for /f "delims=" %%a in ('dir /b /a-d *.pdf ^|findstr /vbc:"S" /vbc:"D C F" /vbc:"D C S" /vbc:"D P" /vbc:"D F"') do (
  8. set "str=!str! "%%a""
  9. )
  10. "%pdftk%" "S*.pdf" "D C F*.pdf" "D C S*.pdf" !str! "D P*.pdf" "D F*.pdf" cat output "%~dp0%%~nxd.pdf"
  11. endlocal
  12. popd
  13. if exist "%%~nxd.pdf" (
  14. move "%%~nxd.pdf" "%%d"
  15. )
  16. )
  17. pause
复制代码
bat小白,请多指教!谢谢!

TOP

回复 14# 77七
感谢77.

TOP

返回列表