Board logo

标题: [文件操作] [分享]BAT+VBS+PowerShell获取PPT文件页数和大小并重命名文件 [打印本页]

作者: Batcher    时间: 2023-11-13 17:09     标题: [分享]BAT+VBS+PowerShell获取PPT文件页数和大小并重命名文件

使用下面的脚本可以获取PPT文件的路径和页数。
怎样增加获取一个属性:文件大小。
最后把页数和文件大小添加到原始PPT文件名的后面。

例如,原始文件:
中国风PPT模板A.pptx
中国风PPT模板B.pptx

执行代码后得到:
中国风PPT模板A-16-4484791.pptx
中国风PPT模板B-19-2039435.pptx

count_all.bat
  1. @echo off
  2. set "FileOut=results.txt"
  3. type nul > "%FileOut%"
  4. for /r %%f in (*.pptx) do (
  5.     echo Trying to open: %%f
  6.     cscript //nologo count_slides.vbs "%%f" >> "%FileOut%"
  7. )
复制代码
count_slides.vbs
  1. On Error Resume Next
  2. If WScript.Arguments.Count < 1 Then
  3.     WScript.Echo "Usage: cscript count_slides.vbs <ppt_path>"
  4.     WScript.Quit 1
  5. End If
  6. pptPath = WScript.Arguments(0)
  7. Set objPPT = CreateObject("PowerPoint.Application")
  8. Set objPresentation = objPPT.Presentations.Open(pptPath)
  9. If Err Then
  10.     WScript.Echo "Couldn't open file: " & pptPath
  11.     WScript.Quit 1
  12. End If
  13. WScript.Echo pptPath & ":" & objPresentation.Slides.Count
  14. objPresentation.Close
  15. objPPT.Quit
复制代码

作者: Batcher    时间: 2023-11-13 17:10

【方案1】

把 count_all.bat 修改如下:
  1. @echo off
  2. set "FileOut=results.txt"
  3. type nul > "%FileOut%"
  4. for /r %%f in (*.pptx) do (
  5.     echo Trying to open: %%f
  6.     cscript //nologo count_slides.vbs "%%f" >> "%FileOut%"
  7. )
  8. for /f "tokens=2* delims=:" %%a in ('type ""%FileOut%""') do (
  9.     for %%i in ("%%~dpnxa") do (
  10.         ren "%%~dpnxa" "%%~na-%%b-%%~zi%%~xa"
  11.     )
  12. )
复制代码

作者: Batcher    时间: 2023-11-13 17:15

【方案2】

不使用原来的bat和vbs,直接使用新的 2.bat 脚本:
  1. <# :
  2. @echo off
  3. powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0' |Out-String|Invoke-Expression"
  4. #>
  5. $Shell = New-Object -ComObject Shell.Application;
  6. Get-ChildItem *.pptx | ForEach-Object {
  7. $Folder = $Shell.Namespace($_.DirectoryName);
  8. $File = $Folder.ParseName($_.Name);
  9. $n=$Folder.GetDetailsOf($File, 158);
  10. $size=$Folder.GetDetailsOf($File, 1);
  11. ($_.fullname+":"+[string]$n+":"+$size)>>results.txt;
  12. ren $_.fullname ("{0}-{1}-{2}.pptx" -f $_.basename,$n,$size)
  13. }
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2