在网络驱动器上搜索 .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-ContentSelect-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 文件以查找关键字的主要内容,如果未能解决你的问题,请参考以下文章

批处理:从映射的网络驱动器以管理员身份运行

Linux如何在vi里搜索关键字

linux下查找哪个文件中有要找的关键字

linux下查找哪个文件中有要找的关键字?

文本挖掘系列文章4

网络营销进群SEO优化和SEM搜索引擎营销,有什么区别与关系?