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

[文件操作] 批处理如何批量让文件夹下的word文件转为PDF?

[复制链接]
发表于 2023-10-11 17:56:53 | 显示全部楼层 |阅读模式

如何批量让文件夹下的word文件转为PDF:求助大神!转换完的PDF名称保留word的命名名字且路径在源文件夹内,例如:6界址点成果表.docx→6界址点成果表.pdf  注:word的名称只有两个(300多个文件夹下的word名称都叫:4地籍调查表.docx、6界址点成果表.docx,仅文件夹名称不一致)
发表于 2023-10-11 19:10:23 | 显示全部楼层
回复 1# 脑袋大
看看这个能否满足要求:
https://www.cnblogs.com/Mr-nie/p/8029085.html
发表于 2023-10-11 21:36:49 | 显示全部楼层
不知行否
pdf不带书签

  1. @if (0)/*==(0)/* echo off

  2. cmd /u /c dir /b /s /a-d *.docx | cscript //nologo //e:jscript //u "%~f0"
  3. taskkill /F /IM winword.exe 2>nul

  4. pause&exit/b
  5. rem */@end

  6. var nil=null,f=[];
  7. while (!WScript.StdIn.AtEndOfStream) {
  8. s=WScript.StdIn.ReadLine();
  9. f.push(s);
  10. }

  11. var i,p,file,fso=GetObject("new:scripting.filesystemobject");
  12. var wa=GetObject("new:word.application");
  13. wa.Visible=false;wa.DisplayAlerts=false;wa.ScreenUpdating=false;

  14. for (i in f){
  15. p=f[i].split('.');
  16. p.pop();
  17. p.push('pdf');
  18. if (fso.FileExists(p.join('.'))){}
  19. else {
  20. file=wa.Documents.Open(f[i]);
  21. file.SaveAs2(p.join('.'),17);
  22. file.Close(false);
  23. }
  24. }

  25. wa.Visible=true;wa.DisplayAlerts=true;wa.ScreenUpdating=true;
  26. wa.Quit();wa=nil;
复制代码
发表于 2023-10-12 11:21:25 | 显示全部楼层
本帖最后由 ppll2030 于 2023-10-12 11:27 编辑

新手村再次挑战
把以下代码保存为bat文件,放在主文件夹下即可。会自动搜索该文件夹及其子文件夹下的所有word文件并另存为PDF
  1. @echo off

  2. :vbs
  3. (echo Set fso = CreateObject^("Scripting.FileSystemObject"^)
  4. echo For i= 0 To WScript.Arguments.Count -1
  5. echo   doc = WScript.Arguments^(i^)
  6. echo   doc = fso.GetAbsolutePathName^(doc^)
  7. echo   If LCase^(Right^(doc, 4^)^) = ".doc" Or LCase^(Right^(doc, 5^)^) = ".docx" Then
  8. echo     Set objWord = CreateObject^("Word.Application"^)
  9. echo     pdfPath = FSO.GetFile^(doc^).ParentFolder
  10. echo     pdfname = fso.GetBaseName^(doc^) ^& ".pdf"
  11. echo     objWord.Visible = False
  12. echo     Set objDoc = objWord.documents.open^(doc^)
  13. echo     objDoc.saveas pdfPath ^& "" ^& pdfname,17
  14. echo     objDoc.Close
  15. echo     objWord.Quit
  16. echo   End If
  17. echo   Next ) > Word2PDF.vbs
  18.   
  19. for /f "delims=" %%i in ('dir /b /s /a-d *.doc') do Word2PDF.vbs "%%i"
  20. del /p Word2PDF.vbs
  21. echo.&echo 当前文件夹(含子文件夹)下的所有word文档已全部转换成PDF~! &pause >NUL
复制代码
温馨提示:
如果你的word文件过多或过大,脚本效率将大大降低。
这类操作还是建议用PDF批量工具完成较好。
 楼主| 发表于 2023-10-16 09:21:16 | 显示全部楼层
回复 4# ppll2030
谢谢
 楼主| 发表于 2023-10-16 09:21:28 | 显示全部楼层
回复 3# Five66

感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 08:59 , Processed in 0.018598 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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