从一批 Word 文档中获取“总编辑时间”

从一批 Word 文档中获取“总编辑时间”

您好,我想自动收集指定文件夹中多个 Word .docx 文档的总编辑时间。是否可以通过 Powershell 读取 Word 文档的此类属性?

答案1

是的,如果您愿意探究文件内部,您甚至不必在进行探究的计算机上安装 Word!Word 文档实际上是 ZIP 文件,里面有一堆小文件。文件夹中docProps有一个app.xml文件,其中包含各种文档属性。总编辑时间(以分钟为单位)位于元素<TotalTime>内的元素中<Properties>

我编写了这个 PowerShell 脚本来计算当前目录中每个 DOCX 文件的时间:

Add-Type -AssemblyName System.IO.Compression.FileSystem
$totalmins = 0
dir -File | ? {$_.Extension -like '.docx'} | % {
    $zip = [System.IO.Compression.ZipFile]::Open($_.FullName, 'Read')
    $propsentry = $zip.GetEntry('docProps/app.xml')
    If ($propsentry -ne $null) {
        $stream = $propsentry.Open()
        $reader = New-Object System.IO.StreamReader $stream
        $content = $reader.ReadToEnd()
        $xmldoc = [xml]$content
        $totalmins += $xmldoc.Properties.TotalTime
    }
    $zip.Dispose()
}
$totalmins

有趣的部分只是使用.NETZipFile类在文档内部进行探索,然后将目标文件的内容转换为 XML 文档,获取编号并将其添加到变量中$totalmins,最后打印出来。

相关内容