从Word和Excel文件中提取元数据?

问题描述:

我在Windows 7操作系统中有一系列嵌套的文件夹,全部保存文件。这些文件是Word和Excel。我想提取作者所有者修改日期创建日期从每个文件的元数据领域,并输出到一个文本文件中。从Word和Excel文件中提取元数据?

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

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

(顺便说一句,元数据绝对是文件中存在 - 我知道这通过使用OP的原始,未能够对递归脚本)。

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

有没有人对我有任何建议?

编辑:我刚刚发现一些新的信息here,这可能是一个重复的问题。我讨厌现在删除它,以防某人在回答问题。任何混淆的道歉

你仍然可以使用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创建一个空白的属性。

+0

非常感谢你@BenH - 这个很棒!我把| Out-file C:\ metadata6.txt - 在您的“-1)”后面添加以获取文本文件。有一件事很奇怪:对于提取的文件的一半,没有“标题”元数据。你知道这是为什么吗?大多数这些非标题条目都位于子文件夹中。 – oymonk

+0

我不知道为什么。 'GetDetailsOf'方法应该提取所有非空白字段。如果答案适合你,那么最好的做法是接受它。 – BenH

+0

非常感谢伟大的解决方案。 – oymonk