在网络驱动器上搜索 .msg 文件以查找关键字
Posted
技术标签:
【中文标题】在网络驱动器上搜索 .msg 文件以查找关键字【英文标题】:Search .msg files on network drive for a keyword 【发布时间】:2019-03-17 21:07:21 【问题描述】:我需要在网络驱动器上搜索 25000 个单独的 .msg 文件以查找关键字。我已经为 Word、Excel、PDF 创建了脚本,但我被困在 Outlook 消息文件 (.msg) 上。我需要脚本来读取 .msg 文件,找到关键字,然后如果关键字在 .msg 文件中,则将文件复制到另一个文件夹。我用谷歌搜索了,但没有找到我需要的帮助。
我已尝试添加Get-Content
、Select-String -Pattern
,但出现了我无法弄清楚的错误。
这是我得到的最接近的结果。
Get-ChildItem "y:\test" -Filter *.msg |
ForEach-Object
$outlook = New-Object -ComObject Outlook.Application
$msg = $outlook.CreateItemFromTemplate($_.FullName)
$msg | Select body | ft -AutoSize
这会找到我的测试 .msg 文件。它显示正文,我可以看到关键字。现在我需要剩下的。
【问题讨论】:
powershell 是必需的吗?是python还是php一个选项? 【参考方案1】:你快到了。 $msg
只是一个长字符串,所以你可以使用一个简单的-like
匹配来查看它是否包含你的关键字:
Get-ChildItem "y:\test" -Filter *.msg |
ForEach-Object
$outlook = New-Object -comobject outlook.application
$msg = $outlook.CreateItemFromTemplate($_.FullName)
$msg | Select body|ft -AutoSize
if($($msg | Select -ExpandProperty body) -like "*keyword*")
# logic to copy file
【讨论】:
里程数可能会有所不同,但我想在循环中包含$outlook = New-Object -comobject outlook.application
会浪费性能。以上是关于在网络驱动器上搜索 .msg 文件以查找关键字的主要内容,如果未能解决你的问题,请参考以下文章