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

用VBS对PPT文档操作,删除PPT页面中,固定尺寸大小的图片集合

  [复制链接]
发表于 2021-4-26 19:37:36 | 显示全部楼层 |阅读模式
文本1,内容是尺寸列表,如:
1.39 4.72
2.72 6.52
1.91 5.05
单位:厘米

VBS对某文件夹下所有的PPT和PPTX文件中存在图片的进行比对,只要符合文本1中的尺寸的图片,就删除,然后保存。



能做的回复下吧
发表于 2021-4-26 22:14:39 | 显示全部楼层
本帖最后由 went 于 2021-4-26 22:26 编辑

代码保存为test.bat,选择ansi编码
尺寸列表保存为size.txt  单位使用厘米,写两位小数,格式为:宽 高
test.bat和size.txt放到ppt文件夹中双击运行
  1. // & cls & cd /d "%~dp0" & @cscript -E:javascript -Nologo "%~0" &pause&exit
  2. //判断数组包含
  3. function ArrayTest(array,item){
  4.         for(var i=0;i<array.length;i++){
  5.                 if(array[i] == item)
  6.                         return true;
  7.         }
  8.         return false;
  9. }
  10. //处理ppt函数
  11. function handlePPT(path){
  12.         //打开ppt
  13.         ppt.Presentations.Open(path);
  14.         //读取ppt
  15.         var prst = ppt.ActivePresentation;
  16.         for(var i=1;i<=prst.Slides.Count;i++){
  17.                 //迭代每一页
  18.                 for(var j=1;j<=prst.Slides.Item(i).Shapes.Count;j++){
  19.                         //迭代每一张图片
  20.                         var pic = prst.Slides.Item(i).Shapes.Item(j);
  21.                         var curWH = '' + (pic.Width/28.35).toFixed(2) + ' ' + (pic.Height/28.35).toFixed(2);
  22.                         if(ArrayTest(sizeList,curWH)){
  23.                                 WSH.Echo(curWH);
  24.                                 WSH.Echo('第' + i + '页删除第' + j + '张图片:' + pic.Name);
  25.                                 pic.Delete();
  26.                                 --j;
  27.                                 WSH.Echo('-------');
  28.                         }
  29.                 }
  30.         }
  31.         //保存并关闭ppt
  32.         prst.Save();
  33.         prst.Close();
  34. }
  35. //读取尺寸列表
  36. var fso = new ActiveXObject('Scripting.FileSystemObject');
  37. var ofs = fso.OpenTextFile('size.txt',1,false);
  38. var sizeList = [];
  39. while(!ofs.AtEndOfLine){
  40.         sizeList.push(ofs.ReadLine());
  41. }
  42. ofs.Close();
  43. WSH.Echo('删除尺寸列表:' + sizeList);
  44. var ppt = new ActiveXObject('PowerPoint.Application');
  45. ppt.Visible = true;
  46. //读取ppt列表
  47. var fc = new Enumerator(fso.GetFolder('.').files);
  48. WSH.Echo('---------------------------------');
  49. while(!fc.atEnd()){
  50.         if(!/\.(pptx|ppt)$/.test(fc.item().name)){
  51.                 fc.moveNext();
  52.                 continue;
  53.         }
  54.         WSH.Echo('处理: ' + fc.item().path);
  55.         handlePPT(fc.item());
  56.         fc.moveNext();
  57.         WSH.Echo('---------------------------------');
  58. }
  59. ppt.Quit();
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 02:45 , Processed in 0.020108 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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