七仙花 发表于 2021-1-9 16:04:42

备份恢复office及Windows激活文件的批处理

本帖最后由 七仙花 于 2021-1-21 20:43 编辑

以下是自己参考网上的代码,经过多次测试写的《备份恢复Microsoft Office2010-2019激活文件.cmd》,欢迎测试反馈。


@echo off
echo                                 重要说明
echo.
echo 一、office2010的激活文件在windows7及以上系统中是通用的,只需备份、恢复tokens.dat、cache.dat两个文件及激活密钥即可。
echo.
echo 二、data.dat是系统隐藏文件,包含windows系统及office密钥信息,在Windows8及以上系统恢复office2013、office2016、office2019激活文件tokens.dat、cache.dat、data.dat后无需输入密钥,软件自动激活。(为了安全,请务必保存好windows系统及office密钥)
echo.
echo 三、在windows8系统中激活的office2013、office2016、office2019激活文件tokens.dat、cache.dat,可以用于windows8.1、windows10系统。
echo.
echo 1、用法:安装完office2013、office2016、office2019后无需联网,用原windows8系统中备份的激活文件tokens.dat、cache.dat覆盖当前系统中的文件,然后用批处理导入对应office密钥即可实现激活。
echo.
echo 2、注意:千万不要使用data.dat文件进行覆盖,否则windows系统激活失效,打开office软件会进行重新配置,并且提示配置失败要求退出软件。此时要想正常激活使用,必须打开控制面板-卸载程序-更改office安装,选择输入产品密钥,输入对应密钥后,等待软件重新配置完毕方可激活使用。
echo.

:获取 Microsoft Office 安装路径
Setlocal Enabledelayedexpansion
for /f "delims=\ tokens=5,*" %%a in ('reg query HKLM\SOFTWARE\Microsoft\Office /f "." /k 2^>nul') do (
    for /f "skip=1 tokens=2,* delims= " %%b in ('reg query HKLM\SOFTWARE\Microsoft\Office\%%~a\Word\InstallRoot /v Path 2^>nul') do (
      set "WordPath=%%~c"
    )
)
if defined WordPath (set "WordPath=%WordPath:root\Office16=Office16%") else (
echo 未检测到当前系统安装有 Microsoft Office 软件,请直接关闭或按任意键退出 ......
pause >nul
goto :eof
)

:获取 Microsoft Office 版本
for /f "tokens=4 delims=, " %%i in ('cscript "%WordPath%ospp.vbs" /dstatus') do (set /a n+=1 & if !n! equ 3 set "V=%%i")

cd /d "%~dp0"
title ===备份恢复 Microsoft Office 2010、2013、2016、2019激活文件===
echo.
echo 请选择你需要的功能
echo.
:begin
set "xxx="&set /p xxx=1.备份 2.恢复:
if "%xxx%" neq "1" if "%xxx%" neq "2" cls&goto begin
cls&goto xx%xxx%

:xx1
if /i !V!==14 goto 2010b
if /i !V!==15 goto 2013b
if /i !V!==16 goto 2016b
if /i !V!==19 goto 2019b
echo 未检测到系统安装有Office软件,请直接关闭或按任意键退出 ......
pause >nul
goto :eof

:xx2
if /i !V!==14 goto 2010a
if /i !V!==15 goto 2013a
if /i !V!==16 goto 2016a
if /i !V!==19 goto 2019a
echo 未检测到系统安装有Office软件,请直接关闭或按任意键退出 ......
pause >nul
goto :eof

:2010b
for /f "tokens=3" %%a in ('wmic os get Caption') do if /i "%%a" neq "" set Win=%%a
if /i %Win%==7 echo 当前系统为 Windows 7&goto :2010Win7b
if /i %Win%==8 echo 当前系统为 Windows 8&goto :2010Win7b
if /i %Win%==8.1 echo 当前系统为 Windows 8.1&goto :2010Win7b
if /i %Win%==10 echo 当前系统为 Windows 10&goto :2010Win7b
goto :eof

:2010Win7b
md \win7_2010
xcopy "%ALLUSERSPROFILE%\Microsoft\OfficeSoftwareProtectionPlatform\tokens.dat" "%~dp0"\Win7_Office2010\tokens.dat /q /y
xcopy "%ALLUSERSPROFILE%\Microsoft\OfficeSoftwareProtectionPlatform\Cache\cache.dat" "%~dp0"\Win7_Office2010\cache.dat /q /y
echo 备份完成!
echo 请直接关闭或按任意键退出 ......
pause >nul
goto :eof

:2013b
for /f "tokens=3" %%a in ('wmic os get Caption') do if /i "%%a" neq "" set Win=%%a
if /i %Win%==7 goto :2013Win7b
if /i %Win%==8 goto :2013Win8b
if /i %Win%==8.1 goto :2013Win8.1b
if /i %Win%==10 goto :2013Win10b
goto :eof

:2013Win7b
echo 当前系统为 Windows 7
xcopy "%ALLUSERSPROFILE%\Microsoft\OfficeSoftwareProtectionPlatform\tokens.dat" "%~dp0"\Win7_Office2013\tokens.dat /q /y
xcopy "%ALLUSERSPROFILE%\Microsoft\OfficeSoftwareProtectionPlatform\Cache\cache.dat" "%~dp0"\Win7_Office2013\cache.dat /q /y
echo 备份完成!
echo 请直接关闭或按任意键退出 ......
pause >nul
goto :eof

:2013Win8b
echo 当前系统为 Windows 8
xcopy "%SystemRoot%\system32\spp\store\data.dat" "%~dp0"\Win8_Office2013\data.dat /h /k /q /y
xcopy "%SystemRoot%\system32\spp\store\tokens.dat" "%~dp0"\Win8_Office2013\tokens.dat /q /y
xcopy "%SystemRoot%\system32\spp\store\Cache\cache.dat" "%~dp0"\Win8_Office2013\cache.dat /q /y
echo 备份完成!
echo 请直接关闭或按任意键退出 ......
pause >nul
goto :eof

:2013Win8.1b
echo 当前系统为 Windows 8.1
xcopy "%SystemRoot%\system32\spp\store\2.0\data.dat" "%~dp0"\Win8.1_Office2013\data.dat /h /k /q /y
xcopy "%SystemRoot%\system32\spp\store\2.0\tokens.dat" "%~dp0"\Win8.1_Office2013\tokens.dat /q /y
xcopy "%SystemRoot%\system32\spp\store\2.0\Cache\cache.dat" "%~dp0"\Win8.1_Office2013\cache.dat /q /y
echo 备份完成!
echo 请直接关闭或按任意键退出 ......
pause >nul
goto :eof

:2013Win10b
echo 当前系统为 Windows 10
xcopy "%SystemRoot%\system32\spp\store\2.0\data.dat" "%~dp0"\Win10_Office2013\data.dat /h /k /q /y
xcopy "%SystemRoot%\system32\spp\store\2.0\tokens.dat" "%~dp0"\Win10_Office2013\tokens.dat /q /y
xcopy "%SystemRoot%\system32\spp\store\2.0\Cache\cache.dat" "%~dp0"\Win10_Office2013\cache.dat /q /y
echo 备份完成!
echo 请直接关闭或按任意键退出 ......
pause >nul
goto :eof


:2016b
for /f "tokens=3" %%a in ('wmic os get Caption') do if /i "%%a" neq "" set Win=%%a
if /i %Win%==7 goto :2016Win7b
if /i %Win%==8 goto :2016Win8b
if /i %Win%==8.1 goto :2016Win8.1b
if /i %Win%==10 goto :2016Win10b
goto :eof

:2016Win7b
echo 当前系统为 Windows 7
xcopy "%ALLUSERSPROFILE%\Microsoft\OfficeSoftwareProtectionPlatform\tokens.dat" "%~dp0"\Win7_Office2016\tokens.dat /q /y
xcopy "%ALLUSERSPROFILE%\Microsoft\OfficeSoftwareProtectionPlatform\Cache\cache.dat" "%~dp0"\Win7_Office2016\cache.dat /q /y
echo 备份完成!
echo 请直接关闭或按任意键退出 ......
pause >nul
goto :eof

:2016Win8b
echo 当前系统为 Windows 8
xcopy "%SystemRoot%\system32\spp\store\data.dat" "%~dp0"\Win8_Office2016\data.dat /h /k /q /y
xcopy "%SystemRoot%\system32\spp\store\tokens.dat" "%~dp0"\Win8_Office2016\tokens.dat /q /y
xcopy "%SystemRoot%\system32\spp\store\Cache\cache.dat" "%~dp0"\Win8_Office2016\cache.dat /q /y
echo 备份完成!
echo 请直接关闭或按任意键退出 ......
pause >nul
goto :eof

:2016Win8.1b
echo 当前系统为 Windows 8.1
xcopy "%SystemRoot%\system32\spp\store\2.0\data.dat" "%~dp0"\Win8.1_Office2016\data.dat /h /k /q /y
xcopy "%SystemRoot%\system32\spp\store\2.0\tokens.dat" "%~dp0"\Win8.1_Office2016\tokens.dat /q /y
xcopy "%SystemRoot%\system32\spp\store\2.0\Cache\cache.dat" "%~dp0"\Win8.1_Office2016\cache.dat /q /y
echo 备份完成!
echo 请直接关闭或按任意键退出 ......
pause >nul
goto :eof

:2016Win10b
echo 当前系统为 Windows 10
xcopy "%SystemRoot%\system32\spp\store\2.0\data.dat" "%~dp0"\Win10_Office2016\data.dat /h /k /q /y
xcopy "%SystemRoot%\system32\spp\store\2.0\tokens.dat" "%~dp0"\Win10_Office2016\tokens.dat /q /y
xcopy "%SystemRoot%\system32\spp\store\2.0\Cache\cache.dat" "%~dp0"\Win10_Office2016\cache.dat /q /y
echo 备份完成!
echo 请直接关闭或按任意键退出 ......
pause >nul
goto :eof

:2019b
for /f "tokens=3" %%a in ('wmic os get Caption') do if /i "%%a" neq "" set Win=%%a
if /i %Win%==10 goto :2019Win10b
goto :eof

:2019Win10b
echo 当前系统为 Windows 10
xcopy "%SystemRoot%\system32\spp\store\2.0\data.dat" "%~dp0"\Win10_Office2019\data.dat /h /k /q /y
xcopy "%SystemRoot%\system32\spp\store\2.0\tokens.dat" "%~dp0"\Win10_Office2019\tokens.dat /q /y
xcopy "%SystemRoot%\system32\spp\store\2.0\Cache\cache.dat" "%~dp0"\Win10_Office2019\cache.dat /q /y
echo 备份完成!
echo 请直接关闭或按任意键退出 ......
pause >nul
goto :eof

:2010a
net stop osppsvc
for /f "tokens=3" %%a in ('wmic os get Caption') do if /i "%%a" neq "" set Win=%%a
if /i %Win%==7 echo 当前系统为 Windows 7&goto :2010Win7a
if /i %Win%==8 echo 当前系统为 Windows 8&goto :2010Win7a
if /i %Win%==8.1 echo 当前系统为 Windows 8.1&goto :2010Win7a
if /i %Win%==10 echo 当前系统为 Windows 10&goto :2010Win7a
goto :eof

:2010Win7a
net stop osppsvc
xcopy "%~dp0"\Win7_Office2010\tokens.dat "%ALLUSERSPROFILE%\Microsoft\OfficeSoftwareProtectionPlatform\tokens.dat" /q /y
xcopy "%~dp0"\Win7_Office2010\cache.dat"%ALLUSERSPROFILE%\Microsoft\OfficeSoftwareProtectionPlatform\Cache\cache.dat" /q /y
cscript "%WordPath%ospp.vbs" /inpkey:GV3XD-HYC8Q-J2BTD-JQYV4-MVCT2
echo 恢复完成!
echo 请直接关闭或按任意键退出 ......
pause >nul
goto :eof

:2013a
for /f "tokens=3" %%a in ('wmic os get Caption') do if /i "%%a" neq "" set Win=%%a
if /i %Win%==7 goto :2013Win7a
if /i %Win%==8 goto :2013Win8a
if /i %Win%==8.1 goto :2013Win8.1a
if /i %Win%==10 goto :2013Win10a
goto :eof

:2013Win7a
echo 当前系统为 Windows 7
net stop osppsvc
xcopy "%~dp0"\Win7_Office2013\tokens.dat "%ALLUSERSPROFILE%\Microsoft\OfficeSoftwareProtectionPlatform\tokens.dat" /q /y
xcopy "%~dp0"\Win7_Office2013\cache.dat "%ALLUSERSPROFILE%\Microsoft\OfficeSoftwareProtectionPlatform\Cache\cache.dat" /q /y
cscript "%WordPath%ospp.vbs" /inpkey:P47N9-3PRHV-X6V3V-X74WG-J2MG7
echo 恢复完成!
echo 请直接关闭或按任意键退出 ......
pause >nul
goto :eof

:2013Win8a
echo 当前系统为 Windows 8
xcopy "%~dp0"\Win8_Office2013\data.dat "%SystemRoot%\system32\spp\store\data.dat" /h /k /q /y
xcopy "%~dp0"\Win8_Office2013\tokens.dat "%SystemRoot%\system32\spp\store\tokens.dat" /q /y
xcopy "%~dp0"\Win8_Office2013\cache.dat "%SystemRoot%\system32\spp\store\Cache\cache.dat" /q /y
echo 恢复完成!
echo 请直接关闭或按任意键退出 ......
pause >nul
goto :eof

:2013Win8.1a
echo 当前系统为 Windows 8.1
xcopy "%~dp0"\Win8.1_Office2013\data.dat "%SystemRoot%\system32\spp\store\2.0\data.dat" /h /k /q /y
xcopy "%~dp0"\Win8.1_Office2013\tokens.dat "%SystemRoot%\system32\spp\store\2.0\tokens.dat" /q /y
xcopy "%~dp0"\Win8.1_Office2013\cache.dat "%SystemRoot%\system32\spp\store\2.0\Cache\cache.dat" /q /y
echo 恢复完成!
echo 请直接关闭或按任意键退出 ......
pause >nul
goto :eof

:2013Win10a
echo 当前系统为 Windows 10
xcopy "%~dp0"\Win10_Office2013\data.dat "%SystemRoot%\system32\spp\store\2.0\data.dat" /h /k /q /y
xcopy "%~dp0"\Win10_Office2013\tokens.dat "%SystemRoot%\system32\spp\store\2.0\tokens.dat" /q /y
xcopy "%~dp0"\Win10_Office2013\cache.dat "%SystemRoot%\system32\spp\store\2.0\Cache\cache.dat" /q /y
echo 恢复完成!
echo 请直接关闭或按任意键退出 ......
pause >nul
goto :eof


:2016a
for /f "tokens=3" %%a in ('wmic os get Caption') do if /i "%%a" neq "" set Win=%%a
if /i %Win%==7 goto :2016Win7a
if /i %Win%==8 goto :2016Win8a
if /i %Win%==8.1 goto :2016Win8.1a
if /i %Win%==10 goto :2016Win10a
goto :eof

:2016Win7a
echo 当前系统为 Windows 7
net stop osppsvc
xcopy "%~dp0"\Win7_Office2016\tokens.dat "%ALLUSERSPROFILE%\Microsoft\OfficeSoftwareProtectionPlatform\tokens.dat" /q /y
xcopy "%~dp0"\Win7_Office2016\cache.dat "%ALLUSERSPROFILE%\Microsoft\OfficeSoftwareProtectionPlatform\Cache\cache.dat" /q /y
cscript "%WordPath%ospp.vbs" /inpkey:CNXHK-F3QWX-84HFW-697BG-WXCQY
echo 恢复完成!
echo 请直接关闭或按任意键退出 ......
pause >nul
goto :eof

:2016Win8a
echo 当前系统为 Windows 8
xcopy "%~dp0"\Win8_Office2016\data.dat "%SystemRoot%\system32\spp\store\data.dat" /h /k /q /y
xcopy "%~dp0"\Win8_Office2016\tokens.dat "%SystemRoot%\system32\spp\store\tokens.dat" /q /y
xcopy "%~dp0"\Win8_Office2016\cache.dat "%SystemRoot%\system32\spp\store\Cache\cache.dat" /q /y
echo 恢复完成!
echo 请直接关闭或按任意键退出 ......
pause >nul
goto :eof

:2016Win8.1a
echo 当前系统为 Windows 8.1
xcopy "%~dp0"\Win8.1_Office2016\data.dat "%SystemRoot%\system32\spp\store\2.0\data.dat" /h /k /q /y
xcopy "%~dp0"\Win8.1_Office2016\tokens.dat "%SystemRoot%\system32\spp\store\2.0\tokens.dat" /q /y
xcopy "%~dp0"\Win8.1_Office2016\cache.dat "%SystemRoot%\system32\spp\store\2.0\Cache\cache.dat" /q /y
echo 恢复完成!
echo 请直接关闭或按任意键退出 ......
pause >nul
goto :eof

:2016Win10a
echo 当前系统为 Windows 10
xcopy "%~dp0"\Win10_Office2016\data.dat "%SystemRoot%\system32\spp\store\2.0\data.dat" /h /k /q /y
xcopy "%~dp0"\Win10_Office2016\tokens.dat "%SystemRoot%\system32\spp\store\2.0\tokens.dat" /q /y
xcopy "%~dp0"\Win10_Office2016\cache.dat "%SystemRoot%\system32\spp\store\2.0\Cache\cache.dat" /q /y
echo 恢复完成!
echo 请直接关闭或按任意键退出 ......
pause >nul
goto :eof

:2019a
for /f "tokens=3" %%a in ('wmic os get Caption') do if /i "%%a" neq "" set Win=%%a
if /i %Win%==10 goto :2019Win10a
goto :eof

:2019Win10a
echo 当前系统为 Windows 10
xcopy "%~dp0"\Win10_Office2019\data.dat "%SystemRoot%\system32\spp\store\2.0\data.dat" /h /k /q /y
xcopy "%~dp0"\Win10_Office2019\tokens.dat "%SystemRoot%\system32\spp\store\2.0\tokens.dat" /q /y
xcopy "%~dp0"\Win10_Office2019\cache.dat "%SystemRoot%\system32\spp\store\2.0\Cache\cache.dat" /q /y
echo 恢复完成!
echo 请直接关闭或按任意键退出 ......
pause >nul
goto :eof



下面这个是备份恢复Windows7激活文件的批处理。


@echo off
@echo                                 重要说明
echo.
@echo Windows 7专业版与企业版的激活文件不能通用,错误使用不同版本的激活文件,系统安装的网络打印机将不能正常打印,系统自带的截图工具不能使用,windows的个性化设置也不能使用,打开个性化设置会出现“此页在该版本的Windows中不可用”。
echo.


cd /d "%~dp0"
title ===备份恢复 Windows 7 系统激活文件===
echo.
echo.
echo.
@echo 请选择你需要的功能
echo.
:begin
set "xxx="&set /p xxx=1.备份 2.恢复:
if "%xxx%" neq "1" if "%xxx%" neq "2" cls&goto begin
cls&goto xx%xxx%

:xx1

@echo off
copy %windir%\System32\spp\tokens\pkeyconfig\pkeyconfig.xrm-ms
copy %windir%\ServiceProfiles\NetworkService\AppData\Roaming\Microsoft\SoftwareProtectionPlatform\tokens.dat
copy %windir%\ServiceProfiles\NetworkService\AppData\Roaming\Microsoft\SoftwareProtectionPlatform\Cache\cache.dat

echo 备份完成!
echo 请直接关闭或按任意键退出 ......
pause >nul
goto :eof

:xx2

@echo off
net stop sppsvc /y
takeown /f "%WinDir%\System32\spp\tokens\pkeyconfig\pkeyconfig.xrm-ms"
cacls "%WinDir%\ServiceProfiles\NetworkService\AppData\Roaming\Microsoft\SoftwareProtectionPlatform\tokens.dat" /e /g everyone:f
cacls "%WinDir%\ServiceProfiles\NetworkService\AppData\Roaming\Microsoft\SoftwareProtectionPlatform\Cache\cache.dat" /e /g everyone:f
cacls "%WinDir%\System32\spp\tokens\pkeyconfig\pkeyconfig.xrm-ms" /e /g everyone:f
ren "%WinDir%\ServiceProfiles\NetworkService\AppData\Roaming\Microsoft\SoftwareProtectionPlatform\tokens.dat" "tokens.bak"
ren "%WinDir%\ServiceProfiles\NetworkService\AppData\Roaming\Microsoft\SoftwareProtectionPlatform\Cache\cache.dat" "cache.bak"
ren "%WinDir%\System32\spp\tokens\pkeyconfig\pkeyconfig.xrm-ms" "pkeyconfig.bak"
copy tokens.dat "%WinDir%\ServiceProfiles\NetworkService\AppData\Roaming\Microsoft\SoftwareProtectionPlatform\"
copy cache.dat "%WinDir%\ServiceProfiles\NetworkService\AppData\Roaming\Microsoft\SoftwareProtectionPlatform\Cache\"
copy pkeyconfig.xrm-ms "%WinDir%\System32\spp\tokens\pkeyconfig\"

net start sppsvc
slmgr.vbs /ipk 374KC-FYD3Y-YV69W-32J24-CWRXV

echo 恢复完成!
echo 请直接关闭或按任意键退出 ......
pause >nul
goto :eof









秋水长天369 发表于 2021-1-12 19:34:05

好东西

xuxiangyin 发表于 2021-1-12 23:06:05

大神,膜拜中

秋水长天369 发表于 2021-1-14 22:58:54

谢谢分享

七仙花 发表于 2021-1-17 17:17:45

本帖最后由 七仙花 于 2021-1-21 16:49 编辑

自己从网上找到一段代码,通过读取注册表来判断Office的安装路径,然后调用ospp.vbs来判断Office版本,测试过在win7和win10系统下,已经可以识别出Office2019了。代码放一楼,以供参考。

2010wlm 发表于 2021-1-26 18:23:43

这个挺厉害,收藏一下

秋水长天369 发表于 2021-1-26 22:06:47

谢谢分享,收藏

zhangze 发表于 2021-1-27 11:45:01

恢复office2013、office2016、office2019激活文件tokens.dat、cache.dat、data.dat后无需输入密钥,软件自动激活。下面又说不能直接覆盖data.dat,那么还是不能直接备份恢复,必须要激活码才行了!

七仙花 发表于 2021-1-27 12:32:59

zhangze 发表于 2021-1-27 11:45
恢复office2013、office2016、office2019激活文件tokens.dat、cache.dat、data.dat后无需输入密钥,软件自 ...

看清楚,是第三点下面的注意事项

秋水长天369 发表于 2021-1-27 22:29:18

谢谢分享

zhangze 发表于 2021-1-28 15:20:55

七仙花 发表于 2021-1-27 12:32
看清楚,是第三点下面的注意事项

也就是说,如果是win10系统,装完系统软件,然后在pe下替换这三个文件就可以了,重启完工,不需要其他操作了!那就太好整了!

symwww 发表于 2021-1-28 15:50:40

好东西,谢谢分享

童心学艺 发表于 2021-2-6 06:03:29


谢谢分享

ananpr2000 发表于 2021-2-13 14:29:12

学习学习

童心学艺 发表于 2021-2-19 10:56:37

进来学习学习

淡雅香 发表于 2021-4-18 08:49:13

谢谢,好东西

linzhi1168 发表于 2021-4-18 18:52:13

谢谢分享

ianlcc 发表于 2021-5-3 22:40:56

厲害厲害…真的要好好的收藏起來使用!
謝謝無私的分享

15126222223 发表于 2021-5-9 20:26:24

太厉害了,谢谢了。

fmszkp159 发表于 2021-5-10 10:06:18


谢谢分享

fengling1990 发表于 2022-10-23 14:10:22

感谢分享,钱离开学习

公交石头 发表于 2022-10-31 20:49:43

下载测试{:1_195:}

ZMLoveLH 发表于 2022-11-2 21:03:03

楼主牛人啊,多谢提供教程,学习一下

kuding 发表于 2022-11-14 22:18:58

恢复不了用软件激活 Win7 吧。

teletell 发表于 2023-3-16 14:17:34

感谢分享!

yyz2191958 发表于 2023-3-16 19:59:23

谢谢分享

jlshnlhj 发表于 2023-3-18 09:45:47

用Dism++可备份/还原。

时尚拼搏 发表于 2023-3-23 08:54:56

谢谢分享

K6ypM 发表于 2023-3-23 09:41:59

批处理激活

yb1984724 发表于 2023-3-23 16:25:48


好东西,谢谢分享
页: [1] 2
查看完整版本: 备份恢复office及Windows激活文件的批处理