[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
拿去花
  1. @if (0)==(0) echo off
  2. set "srcDir=D:\test"
  3. set "dstDir=E:\Temp"
  4. md "%dstDir%" 2>nul
  5. dir /b /a-d /s "%srcDir%\*.ppt" | cscript //nologo //e:jscript "%~f0" "%dstDir%"
  6. pause & exit
  7. @end
  8. var dstDir = WSH.Arguments(0) + '\\';
  9. var fso = new ActiveXObject('Scripting.FileSystemObject');
  10. var objApp = new ActiveXObject('PowerPoint.Application');
  11. objApp.Visible = true;
  12. while(!WSH.StdIn.AtEndOfStream){
  13.     var strFile = WSH.StdIn.ReadLine();
  14.     var strName = fso.GetBaseName(strFile);
  15.     var strNewFile = dstDir + strName + '.ppt';
  16.     var i = 0;
  17.     while(fso.FileExists(strNewFile))strNewFile = dstDir + strName + '(' + (++i) + ').ppt';
  18.     var objPres = objApp.Presentations.Open(strFile, false, false, false);
  19.     objPres.SaveAs(strNewFile, 1, false);
  20.     objPres.Close();
  21. }
  22. objApp.Quit()
复制代码

TOP

本帖最后由 WHY 于 2016-7-17 00:30 编辑

回复 16# hzliew
  1. @if (0)==(0) echo off
  2. set "srcDir=D:\Test"
  3. set "dstDir=E:\Temp"
  4. xcopy /s /t "%srcDir%\*" "%dstDir%\"
  5. dir /b /a-d /s "%srcDir%\*.ppt" | cscript //nologo //e:jscript "%~f0" "%srcDir%" "%dstDir%"
  6. (for /f "delims=" %%i in ('dir /b /ad /s "%dstDir%\*" ^| sort /r') do rd "%%i") 2>nul
  7. pause & exit
  8. @end
  9. var arr = WSH.Arguments;
  10. var reg = new RegExp('^' + arr(0).replace(/[\^$+\-\\()[\]{}.]/g, '\\$&'), 'i');
  11. var fso = new ActiveXObject('Scripting.FileSystemObject');
  12. var objApp = new ActiveXObject('PowerPoint.Application');
  13. objApp.Visible = true;
  14. while(!WSH.StdIn.AtEndOfStream){
  15.     var strFile = WSH.StdIn.ReadLine();
  16.     var strNewFile = strFile.replace(reg, arr(1));
  17.     var objPres = objApp.Presentations.Open(strFile, false, false, false);
  18.     objPres.SaveAs(strNewFile);
  19.     objPres.Close();
  20. }
  21. objApp.Quit()
复制代码
正则表达式漏掉特殊字符“.” 补上

TOP

回复 17# hzliew


    把 33 行改成 File.Path

TOP

我觉得 pcl_test 版主17楼的vbs方案考虑不够周全

假设doc文件全部位于 E:\Temp 目录的下一级目录,创建文件夹会失败
另外,假设 srcFolder 变量值为D:\test,而实际目录名为D:\TEST
由于vbs的replace方法区分大小写,字符串不会被替换
1

评分人数

TOP

  1. Dim srcDir, dstDir, fso, objApp
  2. srcDir = "D:\Test"
  3. dstDir = "E:\Temp"
  4. Set fso = CreateObject("Scripting.FileSystemObject")
  5. Set objApp = CreateObject("PowerPoint.Application")
  6. objApp.Visible = True
  7. Call EnumFiles(srcDir)
  8. objApp.Quit
  9. Set objApp = Nothing : Set fso = Nothing
  10. Function EnumFiles(strPath)
  11.     Dim objFile, strExt, arr, strNewFile, objFolder
  12.     For Each objFile In fso.GetFolder(strPath).Files
  13.         strExt = fso.GetExtensionName(objFile.Path)
  14.         If LCase(Left(strExt, 3)) = "ppt" Then
  15.             strNewFile = Replace(objFile.Path, srcDir, dstDir, 1, 1, 1)
  16.             arr = Split(strNewFile, "\")
  17.             If UBound(arr) > 1 Then Call CreateSubFolder(arr)
  18.             Call SaveFile(objFile.Path, strNewFile)
  19.         End If
  20.     Next
  21.       
  22.     For Each objFolder In fso.GetFolder(strPath).SubFolders
  23.         Call EnumFiles(objFolder.Path)
  24.     Next
  25. End Function
  26. Function CreateSubFolder(ByVal arr)
  27.     Dim i, strSubFolder
  28.     strSubFolder = arr(0)
  29.     For i = 1 To UBound(arr) - 1
  30.         strSubFolder = strSubFolder & "\" & arr(i)
  31.         If Not fso.FolderExists(strSubFolder) Then fso.CreateFolder(strSubFolder)
  32.     Next
  33. End Function
  34. Function SaveFile(strFile, ByVal strNewFile)
  35.     Dim objPres
  36.     Set objPres = objApp.Presentations.Open(strFile, false, false, false)
  37.     objPres.SaveAs(strNewFile)
  38.     objPres.Close
  39.     Set objPres = Nothing
  40. End Function
复制代码

TOP

返回列表