web-dev-qa-db-ja.com

700GBのPSTファイルの一括圧縮?

700GBのPSTファイルからメールを抽出してメールアーカイブに送信するアーカイブの移行に取り組んでいます。メッセージが抽出されると、カスタムユーティリティを使用してPSTファイルから削除されます。

ただし、これにより、700GBのほとんど空のPSTファイルが残ります。

コンプライアンス上の理由から、抽出できなかったメッセージを保持する必要があります。また、ディスク領域も再利用する必要があります。

PSTファイルを一括圧縮する方法はありますか?これを行うのに役立つソフトウェアをオンラインで見つけることができません。

500MBのPSTファイルを取得してZipすると、230MBのアーカイブが残ります。ただし、Outlook 2007を使用して圧縮すると、15MBのPSTが残ります。

何千ものPSTファイルを一括圧縮する方法について誰かアイデアがありますか?ファイルが99%空であるため、添付ファイルなどを削除するCompressPSTのようなソリューションは探していません。

これを実現するためのOutlookのコマンドラインスイッチが見つかりませんでした。

5
beeks

OK、私はこれを SmartPST (フリーウェア)と AutoIT (フリーウェア)を使用して達成しました。

SmartPSTを使用すると、PSTファイルをOutlookプロファイルに一括追加できます。ドラッグアンドドロップ。

そして、次のAutoITスクリプトI dug up それぞれを繰り返して圧縮します。 VMで実行して、現在の作業を回避しないようにします。

これは私が求めることができる最高のものになりました。ドラッグアンドドロップして、[ソリューション]をクリックします。 :)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
3
beeks

ビークスに感謝します、これは小さな調整の後で私にとって素晴らしい働きをしました。

Office2013を実行しているWindows8.1 PCでは、レジストリキーが存在しなかったため、次の2行でメールコントロールパネルを開くことができませんでした。

 $ Path = FileGetShortName(RegRead( "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Current> Version\Control Panel\Cpls"、 "mlcfg32.cpl"))
 Run(@ SystemDir& "\ control.exe "&$ Path)

PowerShellスクリプトを使用して最初にメールコントロールパネルを開き、次にAutoITスクリプトを呼び出して残りの作業を行うことで、レジストリをいじることなくメールコントロールパネルを開くことができることがわかりました。

#メールコントロールパネルを開く
 
 Show-ControlPanelItemMail * 
 
#スクリプトを呼び出してすべてのOutlook PSTファイルを圧縮し、スクリプトが
#PowerShellスクリプトの次のステップに進む前に完了します。
 
 Start-Process "C:\ Users\XXX\Documents\Compact all PSTfiles.au3"-待つ
0
Rick Upton