我想从Outlook中的电子邮件中提取.xls文件,将其重命名并将其保存到文件夹中。我找到了一些脚本,但是根据我的需要完全实现了它们。
发布更新。
我找到this one,但它没有重命名,是否可以修改此代码以满足我的要求?
#file path
$filepath = “c:\test”
#set outlook to open
$o = New-Object -comobject outlook.application
$n = $o.GetNamespace(“MAPI”)
#you'll get a popup in outlook at this point where you pick the folder you want to scan
$Account = $n.Folders | ? { $_.Name -eq 'name@domain.com' };
$Inbox = $Account.Folders | ? { $_.Name -match 'Inbox' };
$f = $Inbox.Folders | ? { $_.Name -match 'subfolder' };
#string to search for in attachment name
$file = '.xlsx'
#now loop through them and grab the attachments
$f.Items | foreach {
$_.attachments | foreach {
Write-Host $_.filename
$a = $_.filename
$b = 'Rename ' + $a
If ($a.Contains($file)) {
$_.saveasfile((Join-Path $filepath $b))
}
}
}
发布更新。
此脚本适用于我自己的邮箱。我虽然有一个公用文件夹 添加到我的Outlook,是否可以访问其中的文件夹 公共文件夹通过调整此脚本?
答案 0 :(得分:0)
不确定您希望如何重命名,但这里有一个counter++
示例:
在foreach
语句之前添加一个新变量:
$counter=0
然后在foreach做下一步增加1
$counter++
最后重命名提取的文件,如下
$_.saveasfile((Join-Path $filepath "file$counter.xlsx"))
更好的是举例说明2个真实的文件名,并告诉你如何期待输出