【问题标题】:Adding .eml to the end of every filename in multiple folders将 .eml 添加到多个文件夹中每个文件名的末尾
【发布时间】:2018-03-08 13:31:30
【问题描述】:

所以这是交易:

我一直在使用 Thunderbird - 非常棒,但我想迁移到 Microsoft Outlook。现在因为我做的有点太过分了,我决定使用 maildir 来存储我的电子邮件。再一次很棒,但我需要继续前进。

我的计划是做 Thunderbird -> 导入邮件存储 -> 导出到 pst -> 导入到 Outlook(或让 Outlook 打开文件)。

现在这应该很容易了,但问题是我需要一种方法将“.eml”添加到每个文件的末尾,否则邮件存储将不会导入电子邮件。

我正在运行 Windows 10 pro x64,这就是我在 powershell 中所做的:

Get-ChildItem -File -Recurse | % { Rename-Item -Path $_.PSPath -NewName $_.FullName ( $_.Name + ".eml" )}

现在我看到了https://stackoverflow.com/a/21611922/1129151 中给出的答案,但这不是我想要的。 我也看到了http://www.kevinberridge.com/2010/06/powershell-add-extension-to-every-file.html,但问题是它没有处理递归添加“.eml”。

当我尝试运行上面的代码时,我得到了

Rename-Item : 找不到接受的位置参数 参数“1506493412587000.eml”。在行:1 字符:36 + ... 诅咒 | % { Rename-Item -Path $.PSPath -NewName $.FullName ($_.Nam ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [Rename-Item], ParameterBindingException + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.RenameItemCommand

有人可以告诉我我需要做什么才能打开“.eml”吗?

谢谢你:)

【问题讨论】:

    标签: powershell outlook thunderbird maildir


    【解决方案1】:

    所以所有文件都没有扩展名。 我添加了 File 参数,它只会检索文件而不是文件夹,如果您的邮件文件夹中有任何子文件夹,请使用它。

    get-childItem C:\temp\pos\mail\*.* -Recurse -File | rename-item -newname { "$($_.name).eml" }
    

    【讨论】:

    • 谢谢你,我现在就试试,看起来它可以完成这项工作:)
    【解决方案2】:

    看来我误导了您到错误的帮助部分,对此我很抱歉。我应该引导你到 rename-item 的帮助下。 (抱歉工作忙)。

    所以there 你会发现:

     get-childItem *.txt | rename-item -newname { $_.name -replace '\.txt$','.log' }
    

    这应该会让你继续前进,例如:

    get-childItem C:\temp\pos\mail\*.* -Recurse | rename-item -newname { $_.name -replace '\.txt$','.eml' }
    

    您应该将 txt 更改为文件的扩展名。

    注意到替换部分中的 \$ 了吗? 那是一个正则表达式。 \ 就是说,寻找一个实际的点。 $-符号是说,在字符串的末尾。

    【讨论】:

    • 谢谢你,我想知道我是否正在查看正确的文档 :) 那么这行得通吗? get-childItem C:\temp\pos\mail\* -Recurse | rename-item -newname { $_.name -replace '$','.eml' }因为任何文件的末尾都没有扩展名。
    【解决方案3】:

    你应该看看get-childitem的帮助。

    查看示例,尤其是示例编号 4。

    编辑:

    在对所有文件执行此操作之前,您是否手动完成了一项并检查它是否在 Outlook 中有效?

    【讨论】:

    • 我知道 mailstore 将能够导入 .eml 文件,并且我可以直接在 Outlook 中打开 eml 文件,所以我知道这部分会起作用。这只是我需要整理的重命名。我现在正在查看docs.microsoft.com/en-us/powershell/module/… 谢谢您的反馈:)
    • 我知道 Outlook 可以打开 EML 文件,我问的原因是,我想知道您的文件结构是否相似,您可以将其重命名为 EML 并且它会工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-03
    • 1970-01-01
    • 2013-11-19
    • 2021-04-17
    相关资源
    最近更新 更多