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

执行代码前 手动创建一个空白页的pdf文件,命名为 空白页.pdf

  1. @echo off
  2. rem 批处理保存为ansi编码格式
  3. rem 下载pdftk http://bcn.bathome.net/tool/PDFtk.rar
  4. cd /d "%~dp0"
  5. setlocal enabledelayedexpansion
  6. for /f "delims=" %%i in ('dir /b /a-d *.pdf ^|find /v /i "空白页.pdf"') do (
  7. pdftk "%%i" dump_data |findstr /rbec:"NumberOfPages:.*[13579]" 1>nul && (
  8. set str=!str! "%%i" 空白页.pdf
  9. ) || (
  10. set str=!str! "%%i"
  11. )
  12. )
  13. set str=!str!$$
  14. set "str=!str:空白页.pdf$$=!"
  15. set "str=!str:$$=!"
  16. for %%i in (.) do (
  17. echo 合并 !str!
  18. pdftk !str! cat output "%%~nxi.pdf"
  19. )
  20. endlocal
  21. pause
复制代码
1

评分人数

bat小白,请多指教!谢谢!

TOP

回复 4# 暴雪英雄


  
  1. @echo off
  2. rem 批处理保存为ansi编码格式
  3. rem 下载pdftk http://bcn.bathome.net/tool/PDFtk.rar
  4. set "file=d:\空白页文件夹\空白页.pdf"
  5. set "_pdftk=d:\pdftk\pdftk.exe"
  6. cd /d "%~dp0"
  7. setlocal enabledelayedexpansion
  8. for %%a in (*.pdf) do (
  9. set /a n+=1
  10. )
  11. for /f "delims=" %%i in ('dir /b /a-d *.pdf') do (
  12. set /a m+=1
  13. if !m! neq !n! (
  14. "%_pdftk%" "%%i" dump_data |findstr /rbec:"NumberOfPages:.*[13579]" 1>nul && (
  15. set str=!str! "%%i" "%file%"
  16. ) || (
  17. set str=!str! "%%i"
  18. )
  19. ) else (
  20. set str=!str! "%%i"
  21. )
  22. )
  23. for %%i in (.) do (
  24. echo 合并 !str!
  25. "%_pdftk%" !str! cat output "%%~nxi.pdf"
  26. )
  27. endlocal
  28. pause
复制代码
1

评分人数

bat小白,请多指教!谢谢!

TOP

回复 7# 暴雪英雄


   第25-28行,修改为:
  1. for %%i in (.) do (
  2. echo 合并 !str!
  3. "%_pdftk%" !str! cat output "%%~nxi.pdf"
  4. if exist "%%~nxi.pdf" (
  5. for %%a in (*.pdf) do (
  6. if "%%a" neq "%%~nxi.pdf" (
  7. del "%%a"
  8. )
  9. )
  10. )
  11. )
复制代码
1

评分人数

bat小白,请多指教!谢谢!

TOP

回复 11# 暴雪英雄


   当时这个代码,使用utf-8方便些,所以采用了utf-8编码。试着将5楼代码第16行 修改为
  1. "%_pdftk%" "%%i" dump_data_utf8 output |findstr /rbec:"NumberOfPages:.*[13579]" 1>nul && (
复制代码


并在批处理文件开头添加
  1. chcp 65001 >nul
复制代码


批处理保存为utf-8编码格式
bat小白,请多指教!谢谢!

TOP

回复 10# 暴雪英雄


  1. @echo off
  2. rem 批处理保存为utf-8编码格式
  3. chcp 65001 >nul
  4. for /f "delims=" %%i in ('dir /b /a-d *.pdf') do (
  5. pdftk "%%i" dump_data_utf8 output |find "BookmarkTitle:" 1>nul
  6. if errorlevel 1 (
  7. >report.txt (
  8. echo BookmarkBegin
  9. for /f "tokens=2 delims=(" %%x in ("%%~ni") do (
  10. for /f "tokens=1 delims=2" %%y in ("%%x") do (
  11. echo BookmarkTitle: %%y
  12. )
  13. )
  14. echo BookmarkLevel: 1
  15. echo BookmarkPageNumber: 1
  16. )
  17. pdftk "%%i" update_info_utf8 report.txt output $.pdf
  18. move $.pdf "%%i"
  19. )
  20. )
  21. del report.txt
复制代码
bat小白,请多指教!谢谢!

TOP

本帖最后由 77七 于 2024-3-27 22:41 编辑

回复 14# 暴雪英雄


  添加标签的代码,生成的报告
  1. ansi
  2. BookmarkTitle: &去掉#31532;&去掉#19968;&去掉#31456;
  3. utf-8
  4. BookmarkTitle: 第一章
复制代码


添加标签就是修改这个报告,改为ansi有点麻烦(其实我不会,可能需要其它脚本转换),可以参考12楼,把其它代码向 utf-8靠拢。
bat小白,请多指教!谢谢!

TOP

返回列表