我正在进行存档迁移,其中我从 700GB 的 PST 文件中提取邮件,并将其发送到电子邮件存档。提取邮件后,使用自定义实用程序将其从 PST 文件中删除。
然而,这让我剩下了 700GB 的大部分为空的 PST 文件。
出于合规性原因,我需要保留无法提取的消息,并且还需要回收磁盘空间。
有没有办法批量压缩 PST 文件?我在网上找不到很多有用的软件可以做到这一点。
如果我把一个 500MB 的 PST 文件压缩,我会得到一个 230MB 的存档。但是如果我使用 Outlook 2007 压缩它,我会得到一个 15MB 的 PST。
有人知道如何批量压缩数千个 PST 文件吗?我不需要像 CompressPST 这样的解决方案来删除附件和其他内容,因为这些文件 99% 都是空的。
我找不到任何 Outlook 命令行开关来完成此操作。
答案1
好的,我使用以下方法完成了此操作智能PST(免费软件)和汽车信息技术(免费软件。)
使用 SmartPST,我可以将 PST 文件批量添加到我的 Outlook 配置文件中。拖放即可。
下面的 AutoIT 脚本挖出来迭代每个并压缩。在虚拟机中运行它以避免避免当前工作。
这最终成为了我所能要求的最好的。拖放,然后单击解决方案。:) IT 自动化没有比这更好的了。
#include <GUIListView.au3>
SplashTextOn("Compacting now", "This may take hours...", 250, 40)
;//Runs the mail application that is in control panel.
$Path = FileGetShortName(RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Control Panel\Cpls", "mlcfg32.cpl"))
Run(@SystemDir & "\control.exe " & $Path)
Opt("WinTitleMatchMode", 4)
WinWait("Mail Setup - Outlook", "Setup e-mail accounts and dire")
ControlClick("Mail Setup - Outlook", "Setup e-mail accounts and dire", "Button2")
WinWait("Account Settings", "AcctMgr Tab")
;//Gets list of data files listed
$sTitle = "Account Settings"
$hWnd = WinGetHandle($sTitle)
If @error Then
MsgBox(0, "Error", "Unable to find window")
EndIf
WinActivate($hWnd)
$hlist = ControlGetHandle($hWnd, "", "[CLASS:SysListView32; INSTANCE:2]")
If @error Then Exit
$arraycount = _GUICtrlListView_GetItemCount($hlist)
Local $ltext[$arraycount]
$i = 0
Do
$ltext[$i] = _GUICtrlListView_GetItemText($hlist, $i)
$i = $i + 1
Until $i = $arraycount
;//Goes into each listed Data file and compresses them
$b = 0
Do
_GUICtrlListView_ClickItem($hlist, $b, "left", False, 2)
Sleep(1000)
WinWaitActive("Outlook Data File")
ControlClick("Outlook Data File", "", "[CLASS:Button; INSTANCE:2]") ; click Compact Now
Sleep(1200)
If WinExists("Compact Now") Then WinWaitClose("Compact Now")
WinClose("Outlook Data File")
$b = $b + 1
Until $b = $arraycount
WinClose("Outlook Data Files")
WinClose("Account Settings")
WinClose("Mail Setup - Outlook")
SplashOff()
MsgBox(64, "Outlook", "All accounts were processed." & @CRLF & "Closing in 5 seconds...", 5)
Exit
答案2
谢谢 Beeks,经过一些小的调整后,它对我来说效果很好。
在运行 Office 2013 的 Windows 8.1 PC 上,由于注册表项不存在,以下两行无法打开邮件控制面板。
$Path = FileGetShortName(RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Current>Version\Control Panel\Cpls", "mlcfg32.cpl")) 运行(@SystemDir & "\control.exe " & $Path)
我发现我可以打开邮件控制面板而不必弄乱注册表,方法是使用 PowerShell 脚本首先打开邮件控制面板,然后调用 AutoIT 脚本完成其余操作:
# 打开邮件控制面板 显示控制面板项目邮件* # 调用脚本压缩所有 Outlook PST 文件,等待脚本 # 完成后再继续执行 PowerShell 脚本中的下一步。 启动进程“C:\Users\XXX\Documents\Compact all PST files.au3”-等待