标题: 用VBS对PPT文档操作,删除PPT页面中,固定尺寸大小的图片集合 [打印本页]
作者: hanlei514 时间: 2021-4-26 19:37 标题: 用VBS对PPT文档操作,删除PPT页面中,固定尺寸大小的图片集合
文本1,内容是尺寸列表,如:
1.39 4.72
2.72 6.52
1.91 5.05
单位:厘米
VBS对某文件夹下所有的PPT和PPTX文件中存在图片的进行比对,只要符合文本1中的尺寸的图片,就删除,然后保存。
能做的回复下吧
作者: went 时间: 2021-4-26 22:14
本帖最后由 went 于 2021-4-26 22:26 编辑
代码保存为test.bat,选择ansi编码
尺寸列表保存为size.txt 单位使用厘米,写两位小数,格式为:宽 高
test.bat和size.txt放到ppt文件夹中双击运行- // & cls & cd /d "%~dp0" & @cscript -E:javascript -Nologo "%~0" &pause&exit
- //判断数组包含
- function ArrayTest(array,item){
- for(var i=0;i<array.length;i++){
- if(array[i] == item)
- return true;
- }
- return false;
- }
- //处理ppt函数
- function handlePPT(path){
- //打开ppt
- ppt.Presentations.Open(path);
- //读取ppt
- var prst = ppt.ActivePresentation;
- for(var i=1;i<=prst.Slides.Count;i++){
- //迭代每一页
- for(var j=1;j<=prst.Slides.Item(i).Shapes.Count;j++){
- //迭代每一张图片
- var pic = prst.Slides.Item(i).Shapes.Item(j);
- var curWH = '' + (pic.Width/28.35).toFixed(2) + ' ' + (pic.Height/28.35).toFixed(2);
- if(ArrayTest(sizeList,curWH)){
- WSH.Echo(curWH);
- WSH.Echo('第' + i + '页删除第' + j + '张图片:' + pic.Name);
- pic.Delete();
- --j;
- WSH.Echo('-------');
- }
- }
- }
- //保存并关闭ppt
- prst.Save();
- prst.Close();
- }
- //读取尺寸列表
- var fso = new ActiveXObject('Scripting.FileSystemObject');
- var ofs = fso.OpenTextFile('size.txt',1,false);
- var sizeList = [];
- while(!ofs.AtEndOfLine){
- sizeList.push(ofs.ReadLine());
- }
- ofs.Close();
- WSH.Echo('删除尺寸列表:' + sizeList);
- var ppt = new ActiveXObject('PowerPoint.Application');
- ppt.Visible = true;
- //读取ppt列表
- var fc = new Enumerator(fso.GetFolder('.').files);
- WSH.Echo('---------------------------------');
- while(!fc.atEnd()){
- if(!/\.(pptx|ppt)$/.test(fc.item().name)){
- fc.moveNext();
- continue;
- }
- WSH.Echo('处理: ' + fc.item().path);
- handlePPT(fc.item());
- fc.moveNext();
- WSH.Echo('---------------------------------');
- }
- ppt.Quit();
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |