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

[文件操作] 处理pdf文件的代码突然无法正常运行

[复制链接]
发表于 2024-8-15 11:32:02 | 显示全部楼层 |阅读模式
win7系统,之前代码都能完美运行,实现给pdf加书签,奇数页pdf文件末尾添加空白页,合并pdf为所在文件夹命名的文件,并删除其他pdf文件,最近突然无法运行了,提示“The system cannot write to the specified device”,请问可能存在哪些问题?

  1. rem 批处理保存为utf-8编码格式
  2. chcp 65001 >nul

  3. set "file=C:\PDFtk\空白页.pdf"
  4. set "_pdftk=C:\PDFtk\pdftk.exe"
  5. for /f "delims=" %%i in ('dir /b /a-d *.pdf') do (
  6.         %_pdftk% "%%i" dump_data_utf8 output |find "BookmarkTitle:" 1>nul
  7.         if errorlevel 1 (
  8.                 >report.txt (
  9.                         echo BookmarkBegin
  10.                         for /f "tokens=2 delims=(" %%x in ("%%~ni") do (
  11.                                 for /f "tokens=1 delims=2" %%y in ("%%x") do (
  12.                                         echo BookmarkTitle: %%y
  13.                                 )
  14.                         )
  15.                         echo BookmarkLevel: 1
  16.                         echo BookmarkPageNumber: 1
  17.                 )
  18.                 %_pdftk% "%%i" update_info_utf8 report.txt output $.pdf
  19.                 cmd /c move $.pdf "%%i" >nul 2>&1

  20.         )
  21. )
  22. del report.txt




  23. setlocal enabledelayedexpansion
  24. for %%a in (*.pdf) do (
  25.         set /a n+=1
  26. )

  27. for /f "delims=" %%i in ('dir /b /a-d *.pdf') do (
  28.         set /a m+=1
  29.         if !m! neq !n! (
  30.                 "%_pdftk%" "%%i" dump_data_utf8 output |findstr /rbec:"NumberOfPages:.*[13579]" 1>nul && (
  31.                         set strpdf=!strpdf! "%%i" "%file%"
  32.                 ) || (
  33.                         set strpdf=!strpdf! "%%i"
  34.                 )
  35.         ) else (
  36.                 set strpdf=!strpdf! "%%i"
  37.         )
  38. )

  39. for %%i in (.) do (
  40.         echo 合并 !strpdf!
  41.         "%_pdftk%" !strpdf! cat output "%%~nxi.pdf"
  42.         set dir_name=%%~nxi
  43.         if exist "%%~nxi.pdf" (
  44.                 for %%a in (*.pdf) do (
  45.                         if "%%a" neq "%%~nxi.pdf" (
  46.                                 del "%%a"
  47.                         )
  48.                 )
  49.         )
  50. )

  51. echo 已合并生成"%dir_name%.pdf",并删除其它原始PDF文件。
  52. start "" "%dir_name%.pdf"

  53. endlocal
  54. pause
复制代码
发表于 2024-8-15 14:10:55 | 显示全部楼层
chcp 65001时字体得换成lucida consolecmd窗口才能显示非英文
 楼主| 发表于 2024-8-15 15:09:32 | 显示全部楼层
回复 2# Five66


    感谢,后面按照网上的方法,修改注册表,重置了一下cmd的默认值,就好了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 22:07 , Processed in 0.011553 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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