【问题标题】:Extract metadata from Word and Excel files?从 Word 和 Excel 文件中提取元数据?
【发布时间】:2017-02-23 06:09:39
【问题描述】:

我在 Windows 7 操作系统中有一系列嵌套文件夹,所有文件夹都包含文件。文件是 Word 和 Excel。我想从每个文件中提取 AuthorsOwnerDate ModifiedDate Created 元数据字段,并输出到文本文件。

我第一次尝试使用 PowerShell。 The code presented by the OP here 效果很好,但不会通过文件夹递归。我尝试了各种将“Get-ChildItem”与 funMetadata 函数相结合的方法,但无法做到。由于它不适用于 OP,并且 SO 社区没有提供任何解决方案,因此尝试继续尝试修复此代码似乎是不明智的。相反,我专注于通过替换我自己的元数据字段来修改 OP 的解决方案(如下),但输出文本文件只是说“作者”,然后是一个空白页。这是我尝试过的:

(导航到根文件夹):Get-ChildItem -Recurse | Select-Object Authors | Out-file "C:\text5.txt"

(顺便说一句,元数据肯定存在于文件中——我通过使用 OP 的原始、不可递归脚本知道这一点)。

尝试不同的方法,我下载了两个 python 模块 - hachoiroletools - 但是一旦我安装了它们,我不知道从哪里开始。似乎没有任何文档。

有人给我建议吗?

编辑:我刚刚发现了一些新信息here,这可能是一个重复的问题。不过,我现在不想删除它,以防有人正在寻找答案。对任何混淆表示歉意

【问题讨论】:

    标签: python powershell metadata


    【解决方案1】:

    您仍然可以使用 PowerShell,只需将所有内容绑定在一起以循环访问所有文件。

    $RootFolder = "C:\example"
    $files = Get-ChildItem $RootFolder -Recurse
    foreach ($file in $files) { 
        $Folder = Split-Path $File.FullName
        $FileName = Split-Path $File.FullName -Leaf
        $Shell = New-Object -ComObject Shell.Application
        $FolderObject = $Shell.namespace($Folder)
        $FileObject = $FolderObject.ParseName($FileName)
        $FolderObject.GetDetailsOf($FileObject,-1)
    }
    

    注意:Get-ChildItem 返回的对象没有作者元数据,所以当您使用Select-Object 时,它会创建一个空白属性。

    【讨论】:

    • 非常感谢@BenH - 这很好用!我把 | Out-file C:\metadata6.txt - 在你的“-1)”后面追加一个文本文件。不过有一点很奇怪:对于提取的一半文件,没有“标题”元数据。你知道为什么会这样吗?这些无标题条目中的大多数都位于子文件夹中。
    • 我不知道为什么。 GetDetailsOf 方法应该提取所有非空白字段。此外,如果答案对您有用,那么最好接受它。
    猜你喜欢
    • 1970-01-01
    • 2015-06-13
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 2014-08-20
    相关资源
    最近更新 更多