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

Python 从Word和Excel文件中提取元数据?,python,powershell,metadata,Python,Powershell,Metadata,我在Windows7操作系统中有一系列嵌套文件夹,所有文件夹都保存着文件。这些文件是Word和Excel。我想从每个文件中提取作者、所有者、修改日期和创建日期元数据字段,并输出到文本文件 我的第一次尝试是使用PowerShell。效果很好,但不会在文件夹中递归。我尝试了多种方法将“Get ChildItem”与funMetadata函数结合起来,但没有成功。由于它对OP不起作用,而且SO社区也没有提供任何解决方案,因此尝试继续尝试并修复此代码似乎是不明智的。相反,我专注于通过替换我自己的元数据字

我在Windows7操作系统中有一系列嵌套文件夹,所有文件夹都保存着文件。这些文件是Word和Excel。我想从每个文件中提取作者、所有者、修改日期和创建日期元数据字段,并输出到文本文件

我的第一次尝试是使用PowerShell。效果很好,但不会在文件夹中递归。我尝试了多种方法将“Get ChildItem”与funMetadata函数结合起来,但没有成功。由于它对OP不起作用,而且SO社区也没有提供任何解决方案,因此尝试继续尝试并修复此代码似乎是不明智的。相反,我专注于通过替换我自己的元数据字段来修改OP的解决方案(如下所示),但输出文本文件只是在空白页后显示“Authors”。以下是我尝试过的:

(导航到根文件夹):
getchilditem-Recurse |选择对象作者|输出文件“C:\text5.txt”

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

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

有人给我提建议吗


编辑:我刚刚发现了一些新信息,这可能是一个重复的问题。不过,我不想现在就删除它,以防有人在寻找答案。抱歉给您带来任何困惑

您仍然可以使用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-这非常有效!我将文件C:\metadata6.txt-Append放在“-1”之后,以获得一个文本文件。但有一件事很奇怪:对于提取的一半文件,没有“标题”元数据。你知道为什么会这样吗?大多数没有标题的条目都在子文件夹中。我不知道为什么。
GetDetailsOf
方法应该提取所有非空字段。同样,如果一个答案对你有用,那么接受它是最好的做法。