使用批处理实现完整备份Outlook 2010和恢复

  Microsoft Outlook 的备份问题一直以来都是困扰着广大 Outlook 使用者的头疼问题,从2003到2007再到2010版,网上流传着各种有关备份方法的帖子,然而却始终没有一个做到真正完整地把 Outlook 所有的相关部件都备份出来(这里有篇文章倒是把几乎所有 Outlook 保存的文件都罗列出来了,但遗憾地是它没有谈到注册表中的设置)。用了你就知道,等到重装系统重装 Office 后,你会发现那些方法恢复的 Outlook 不是缺这个就是缺那个,总会有些很繁琐的设置工作必须重做。

  经过反复探索,本人终于通过批处理方式实现了 Outlook 2010 版的完整(至少目前看来是完整的)备份和一键恢复。包括账号信息(不包括密码,从安全角度来看,这个我不认为有必要去弄清楚密码存在哪里,还是自己记住为好)、个人文件夹、邮件规则、通讯录、个性签名、编辑器自动更正选项、粘贴选项、配色方案、信任中心的个人信息选项、邮件到达桌面通知选项……基本上,我能想到的,都包括进去了。如果还有遗漏,麻烦你告诉我一声,我好改进。
(本人原创作品,转载请注明出自玄鸟翩翩)
  备份方法如下——
1)确保 Outlook 没有运行,否则数据文件无法读取。
2)一般默认的个人文件夹是位于 C:Documents and Settings你的用户名My Documents ,但我已经修改了此路径到 D:My Documents ,所以我的 Outlook 数据文件就存放在 D:My DocumentsOutlook 文件Outlook.pst 中,后面的批处理中均以此为准,如果你的路径不是这个的话,请自行修改。
3)在硬盘上你需要备份 Outlook 的地方创建一个文件夹,比如我是在D盘创建了名为 D:OneKeyBackupOutlook 的目录,在此目录下创建一个文本文件,叫做 Backup.bat(不知道怎么把后缀名 .txt 改成 .bat 的请自行百度)。然后将下列内容拷贝进去并保存:

@echo off
echo %CD%
echo Windows Registry Editor Version 5.00>OutlookConfig01.reg
echo.>>OutlookConfig01.reg
echo [HKEY_CURRENT_USERSoftwareMicrosoftOffice14.0Common]>>OutlookConfig01.reg
for /f "skip=2 tokens=3 delims= " %%i in ('reg query "HKCUSoftwareMicrosoftOffice14.0Common" /v Theme') do for /f "tokens=2 delims=x" %%j in ("%%i") do echo "Theme"=dword:0000000%%j>>OutlookConfig01.reg
for /f "skip=2 tokens=3 delims= " %%i in ('reg query "HKCUSoftwareMicrosoftOffice14.0Common" /v RespectSystemFontSmooth') do for /f "tokens=2 delims=x" %%j in ("%%i") do echo "RespectSystemFontSmooth"=dword:0000000%%j>>OutlookConfig01.reg
echo.>>OutlookConfig01.reg
echo [HKEY_CURRENT_USERSoftwareMicrosoftOffice14.0CommonGeneral]>>OutlookConfig01.reg
for /f "skip=2 tokens=3 delims= " %%i in ('reg query "HKCUSoftwareMicrosoftOffice14.0CommonGeneral" /v PasteOptions') do for /f "tokens=2 delims=x" %%j in ("%%i") do echo "RespectSystemFontSmooth"=dword:0000000%%j>>OutlookConfig01.reg
echo.>>OutlookConfig01.reg
echo [HKEY_CURRENT_USERSoftwareMicrosoftShared ToolsProofing Tools1.0Office]>>OutlookConfig01.reg
for /f "skip=2 tokens=3 delims= " %%i in ('reg query "HKCUSoftwareMicrosoftShared ToolsProofing Tools1.0Office" /v OutlookSpellingOptions') do for /f "tokens=2 delims=x" %%j in ("%%i") do echo "OutlookSpellingOptions"=dword:0000000%%j>>OutlookConfig01.reg
echo.>>OutlookConfig01.reg
setlocal ENABLEDELAYEDEXPANSION
echo 备份WinRAR附件(包括用WinRAR打开的.zip文件)打开提示
echo.
echo [HKEY_CLASSES_ROOTWinRAR]>>OutlookConfig01.reg
for /f "skip=2 tokens=3 delims= " %%i in ('reg query "HKCRWinRAR" /v EditFlags') do set x=%%i
set ya=!x:~0,2!
set yb=!x:~2!
set yc=!ya!,
set x=!yb!
:again1
set ya=!x:~0,2!
set yb=!x:~2!
set yc=!yc!!ya!,
set x=!yb!
if !x! gtr " " goto again1
set yc=!yc:~0,-1!
echo "EditFlags"=hex:!yc!>>OutlookConfig01.reg
echo.>>OutlookConfig01.reg
echo [HKEY_CLASSES_ROOTWinRAR.ZIP]>>OutlookConfig01.reg
for /f "skip=2 tokens=3 delims= " %%i in ('reg query "HKCRWinRAR.ZIP" /v EditFlags') do set x=%%i
set ya=!x:~0,2!
set yb=!x:~2!
set yc=!ya!,
set x=!yb!
:again2
set ya=!x:~0,2!
set yb=!x:~2!
set yc=!yc!!ya!,
set x=!yb!
if !x! gtr " " goto again2
set yc=!yc:~0,-1!
echo "EditFlags"=hex:!yc!>>OutlookConfig01.reg
echo.>>OutlookConfig01.reg
echo 备份工具栏设置
echo [HKEY_CURRENT_USERSoftwareMicrosoftOffice14.0CommonToolbarsSettings]>>OutlookConfig01.reg
for /f "skip=2 tokens=4 delims= " %%i in ('reg query HKEY_CURRENT_USERSoftwareMicrosoftOffice14.0CommonToolbarsSettings /v "Microsoft Outlook"') do set x=%%i
set ya=!x:~0,2!
set yb=!x:~2!
set yc=!ya!,
set x=!yb!
:again3
set ya=!x:~0,2!
set yb=!x:~2!
set yc=!yc!!ya!,
set x=!yb!
if !x! gtr " " goto again3
set yc=!yc:~0,-1!
echo "Microsoft Outlook"=hex:!yc!>>OutlookConfig01.reg
endlocal
reg export "HKCUSoftwareMicrosoftOffice14.0CommonMailSettings" OutlookConfig02.reg /y
reg export "HKCUSoftwareMicrosoftOffice14.0CommonToolbarsOutlook" OutlookConfig03.reg /y
reg export "HKCUSoftwareMicrosoftOffice14.0CommonResearchSources" OutlookConfig04.reg /y
reg export "HKCUSoftwareMicrosoftOffice14.0CommonDesktopAlerts" OutlookConfig05.reg /y
reg export "HKCUSoftwareMicrosoftOffice14.0Outlook" OutlookConfig06.reg /y
reg export "HKCUSoftwareMicrosoftOfficeCommonSmart TagApplications" OutlookConfig07.reg /y
reg export "HKCUSoftwareMicrosoftWindows NTCurrentVersionWindows Messaging SubsystemProfilesOutlook" OutlookConfig08.reg /y
echo.
echo 导出邮件常见附件(如doc、xls、ppt、pdf等)预览设置
echo 如需恢复打开前提问,将其值从1改为0,或直接删除相关子健即可
ping 127.1 >nul
echo.
reg export "HKCUSoftwareMicrosoftOfficePreviewers" OutlookConfig09.reg /y
echo.
echo 备份文件
echo.
echo 备份pst文件。若Outlook进程尚未退出,则等待10秒后强制退出。
setlocal ENABLEDELAYEDEXPANSION
set /a var=9
:again4
for /f "tokens=1 delims= " %%i in ('tasklist^|find /I "outlook.exe"') do (
set t=%%i
if /I !t! neq OUTLOOK.EXE goto next
if !var! GTR 0 (
ping 127.1 -n 2 >nul
echo !var!
set /a var-=1
goto again4
) else ( taskkill /f /t /im outlook.exe )
)
:next
endlocal
copy "D:My DocumentsOutlook 文件*.pst" . /Y
xcopy "%APPDATA%MicrosoftOutlook" ".MicrosoftOutlook" /E /H /K /Q /Y
echo 备份词典
xcopy "%APPDATA%MicrosoftUProof" ".MicrosoftUProof" /E /H /K /Q /Y
echo 备份签名
xcopy "%APPDATA%MicrosoftSignatures" ".MicrosoftSignatures" /E /H /K /Q /Y
echo 备份模板
xcopy "%APPDATA%MicrosoftTemplates" ".MicrosoftTemplates" /E /H /K /Q /Y
echo 备份数据文件
xcopy "%USERPROFILE%Local SettingsApplication DataMicrosoftOutlook" ".Local SettingsApplication DataMicrosoftOutlook" /E /H /K /Q /Y
echo 备份自定义窗体
xcopy "%USERPROFILE%Local SettingsApplication DataMicrosoftForms" ".Local SettingsApplication DataMicrosoftForms" /E /H /K /Q /Y
echo 备份信纸
xcopy "%CommonProgramFiles%Microsoft SharedStationery" ".Common FilesMicrosoft SharedStationery" /E /H /K /Q /Y

  备份工作做完了,那么怎么恢复呢?这里我再提供一个一键恢复的批处理。在此目录下再创建一个文本文件,叫做 Restore.bat,然后将下列内容拷贝进去并保存:

@echo off
for %%i in (OutlookConfig*.reg) do regedit /s %%i
echo 恢复pst文件,若Outlook进程尚未退出,则一直等待。
:again5
for /f "tokens=1 delims= " %%i in ('tasklist^|find /I "outlook.exe"') do if /I %%i equ OUTLOOK.EXE goto again5
copy ".*.pst" "D:My DocumentsOutlook 文件" /Y
xcopy ".Microsoft*.*" "%APPDATA%Microsoft" /E /F /H /K /Y
xcopy ".Local SettingsApplication DataMicrosoft*.*" "%USERPROFILE%Local SettingsApplication DataMicrosoft" /E /F /H /K /Y
xcopy ".Common FilesMicrosoft Shared*.*" "%CommonProgramFiles%Microsoft Shared" /E /F /H /K /Y

  但是要特别注意的是,这个恢复如果是在重装系统并重装 Office 之后,那么请务必记住:在你一键恢复之前,请先运行 Outlook 至少一次!在第一次运行时,它会问你是否创建邮件账号,选择不;然后它又问你是否不创建账号并继续运行,选择是;这样就实现了在没有创建账号的情况下首次运行 Outlook。之所以要这么做,是因为 Outlook 在首次运行之前,数据文件pst尚未创建,或者即使创建了,也没有在注册表中登记。如果不进行首次无账号运行 Outlook 就莽撞地执行一键恢复,将有可能导致 Outlook 彻底崩溃(我在2007版的时候就吃过一次亏)。首次运行之后就可以放心进行一键恢复了,关闭 Outlook,运行 Restore.bat,再重新启动 Outlook,你会发现你的 Outlook 再次以你熟悉的面孔出现了。

  补充一点:这个备份方法没有包括防病毒软件的插件,我的系统同时还安装了 Mcafee VirusScan Enterprise,因为选择 Outlook 邮件扫描插件,所以在 Outlook 菜单栏单独有一个 Mcafee 的标签。但是我备份的时候没有考虑这个,之后重装系统并重装 Office,然后一键恢复,再重装 Mcafee,貌似没有发现有什么影响。

  最后,本批处理仅适用于32位版Windows XP和Windows Server 2003环境下。其它版本的Windows由于路径不同,不能兼容,请自行修改。

(本人原创作品,转载请注明出自玄鸟翩翩)

原文地址:https://www.cnblogs.com/ejin/p/7110095.html