从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模块 - hachoir和oletools - 但是一旦我安装了它们,我就不知道从哪里开始。它似乎并没有任何文件。
有没有人对我有任何建议?
编辑:我刚刚发现一些新的信息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
创建一个空白的属性。
非常感谢你@BenH - 这个很棒!我把| Out-file C:\ metadata6.txt - 在您的“-1)”后面添加以获取文本文件。有一件事很奇怪:对于提取的文件的一半,没有“标题”元数据。你知道这是为什么吗?大多数这些非标题条目都位于子文件夹中。 – oymonk
我不知道为什么。 'GetDetailsOf'方法应该提取所有非空白字段。如果答案适合你,那么最好的做法是接受它。 – BenH
非常感谢伟大的解决方案。 – oymonk