• 使用批处理实现完整备份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由于路径不同,不能兼容,请自行修改。

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

  • 相关阅读:
    C++——overloading
    C++——调用优化
    C++——Big Three(copy ctor、copy op=、dtor)
    C++——引用 reference
    C++——构造函数 constructor
    003——矩阵的掩膜操作
    002——加载、修改、保存图像
    001——搭建OpenCV实验环境
    宏——基础
    剖析可执行文件ELF组成
  • 原文地址:https://www.cnblogs.com/ejin/p/7110095.html
Copyright © 2020-2023  润新知