所以这是交易:
我一直在使用Thunderbird - 它很棒,但我想转移到Microsoft Outlook。现在因为我把事情做得太过分了,我决定使用maildir来存储我的电子邮件。再次,它很棒,但我需要继续前进。
我的计划是做Thunderbird - >导入到mailstore - >导出到pst - >导入到outlook(或获取outlook打开文件)。
现在应该很容易,但问题是我需要一种方法将“.eml”添加到每个文件的末尾,否则mailstore将不会导入电子邮件。
我正在运行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”?
谢谢:)
答案 0 :(得分:1)
所以我似乎误导了你错误的帮助部分,因为我很抱歉。我应该引导你到rename-item的帮助。 (抱歉忙于工作)。
所以{{3}}你会发现:
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 更改为文件扩展名。
请注意替换部分中的 \ 和 $ ? 这是一个正则表达式。 \ \也就是说,寻找一个实际的点。 $ -sign就是说,在字符串的末尾。
答案 1 :(得分:0)
你应该看看get-childitem的帮助。
请查看示例,尤其是示例编号4。
编辑:
在对所有文件执行此操作之前,您是否已手动完成并检查它是否在Outlook中运行?
答案 2 :(得分:0)
所以所有文件都没有扩展名。 我添加了File参数,它只检索文件而不是文件夹,如果你的邮件文件夹中有任何子文件夹,请使用它。
get-childItem C:\temp\pos\mail\*.* -Recurse -File | rename-item -newname { "$($_.name).eml" }