无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 5021|回复: 38
打印 上一主题 下一主题

[分享] 留个纪念:用批获取Microsoft Office的版本号

[复制链接]
跳转到指定楼层
1#
发表于 2024-2-12 14:53:09 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 七仙花 于 2024-2-12 16:06 编辑
  1. @echo off

  2. echo 获取 Microsoft Office 安装路径
  3. Setlocal Enabledelayedexpansion
  4. for /f "delims=\ tokens=5,*" %%a in ('reg query HKLM\SOFTWARE\Microsoft\Office /f "." /k 2^>nul') do (
  5.     for /f "skip=1 tokens=2,* delims= " %%b in ('reg query HKLM\SOFTWARE\Microsoft\Office\%%~a\Word\InstallRoot /v Path 2^>nul') do (
  6.         set "WordPath=%%~c"
  7.     )
  8. )
  9. if defined WordPath (set "WordPath=%WordPath:root\Office16=Office16%") else (
  10. echo 未检测到当前系统安装有 Microsoft Office 软件,请直接关闭或按任意键退出 ......
  11. pause >nul
  12. goto :eof
  13. )
  14. echo.
  15. echo Microsoft Office 安装路径是:
  16. echo %WordPath%
  17. echo.
  18. echo 获取 Microsoft Office 文件的版本号
  19. echo.
  20. for /f "delims=\ tokens=1-4" %%i in ("%WordPath%") do set "WordPath=%%i\\%%j\\%%k\\%%l\\"

  21. ::显示misc.exe的版本号
  22. wmic datafile where Name="%WordPath%misc.exe" get Version

  23. ::使用wmic获取misc.exe的版本号并赋值给变量

  24. for /F "skip=1 delims= " %%i in ('wmic datafile where "Name='%WordPath%misc.exe'" get Version') do (
  25.           set "V=%%i"
  26.           goto Ver
  27. )
  28. :Ver
  29. echo Microsoft office 的版本号是%V%
  30. echo.
  31. pause
复制代码


稍做修改,也可以获取其它文件的版本号。
2#
 楼主| 发表于 2024-2-12 16:18:41 | 只看该作者
本帖最后由 七仙花 于 2024-2-12 16:24 编辑

奇怪,明明编辑的时候,代码是正确的,但保存后第21行代码少了一个反斜杠“\",直接复制帖子里的代码,也是少了一个反斜杠。

编辑时是这样的


保存后是这样的


重新编辑,在最后加多一个反斜杠”\",变成3个反斜杠。


保存后才能显示正确的代码








回复

使用道具 举报

3#
 楼主| 发表于 2024-2-12 16:28:11 | 只看该作者
是论坛的问题,还是我的电脑中毒了,明明回复的时候字是正确的,重新编辑就会有几个字变成乱码了,不做改动直接保存,也是显示乱码。

点评

放心吧, 绝不是你的问题,,我也发现了,http://bbs.wuyou.net/forum.php?mod=viewthread&tid=438589&page=2#pid5129985  详情 回复 发表于 2024-2-13 09:37
本坛帖子编辑有不少问题,特别是代码编辑。  详情 回复 发表于 2024-2-12 19:33
回复

使用道具 举报

4#
发表于 2024-2-12 17:47:37 | 只看该作者
谢谢分享
回复

使用道具 举报

5#
发表于 2024-2-12 18:52:24 | 只看该作者
谢谢分享
回复

使用道具 举报

6#
发表于 2024-2-12 19:02:03 | 只看该作者
感谢分享
回复

使用道具 举报

7#
发表于 2024-2-12 19:33:16 来自手机 | 只看该作者
七仙花 发表于 2024-2-12 16:28
是论坛的问题,还是我的电脑中毒了,明明回复的时候字是正确的,重新编辑就会有几个字变成乱码了,不做改动 ...

本坛帖子编辑有不少问题,特别是代码编辑。
回复

使用道具 举报

8#
发表于 2024-2-12 22:25:26 | 只看该作者
谢谢分享
回复

使用道具 举报

9#
发表于 2024-2-12 23:20:55 | 只看该作者
传附件吧
回复

使用道具 举报

10#
发表于 2024-2-13 00:06:23 | 只看该作者
谢谢分享,新年快乐!
回复

使用道具 举报

11#
发表于 2024-2-13 03:20:34 | 只看该作者
谢谢分享
回复

使用道具 举报

12#
发表于 2024-2-13 06:30:33 | 只看该作者
感谢分享!
回复

使用道具 举报

13#
发表于 2024-2-13 09:18:02 来自手机 | 只看该作者
最多能检测到office16,应该重新考虑。

点评

严格来说应该是不支持C2R版本,2016版是最后一版有msi版本的office,之后的office,无论是买断制的2019、2021,抑或是订阅制的365,都只有C2R版本  详情 回复 发表于 2024-2-14 04:15
回复

使用道具 举报

14#
发表于 2024-2-13 09:37:16 | 只看该作者
七仙花 发表于 2024-2-12 16:28
是论坛的问题,还是我的电脑中毒了,明明回复的时候字是正确的,重新编辑就会有几个字变成乱码了,不做改动 ...

放心吧, 绝不是你的问题,,我也发现了,http://bbs.wuyou.net/forum.php?m ... p;page=2#pid5129985
ceshi后边少了\


点评

[attachimg]537734[/attachimg] 某群的照片,是不是更离谱?bug时代一切皆有可能。  详情 回复 发表于 2024-2-13 09:53
[attachimg]537734[/attachimg] 某群的照片,是不是更离谱?bug时代一切皆有可能。  详情 回复 发表于 2024-2-13 09:53
[attachimg]537734[/attachimg] 某群的照片,是不是更离谱?bug时代一切皆有可能。  详情 回复 发表于 2024-2-13 09:52
回复

使用道具 举报

15#
发表于 2024-2-13 09:37:43 | 只看该作者
很实用的代码,谢谢分享
回复

使用道具 举报

16#
发表于 2024-2-13 09:57:46 | 只看该作者
本帖最后由 窄口牛 于 2024-2-13 10:02 编辑



回复

使用道具 举报

17#
发表于 2024-2-13 10:17:56 | 只看该作者
谢谢分享
回复

使用道具 举报

18#
发表于 2024-2-13 13:18:44 | 只看该作者

感谢分享
回复

使用道具 举报

19#
发表于 2024-2-13 14:32:50 | 只看该作者
如何盘点 office是否被激活 ,我遇到了一个这样的问题,一个人买了一个笔记本 试用了几天 ,然后抹除系统 ,看起来和新的一样 请问我如何判断这个笔记本是否被别人激活了?

点评

office激活是绑定到微软账号上的,而不是绑定到主板  详情 回复 发表于 2024-2-14 04:19
回复

使用道具 举报

20#
发表于 2024-2-14 00:34:24 | 只看该作者
感谢分享!
回复

使用道具 举报

21#
发表于 2024-2-14 04:15:21 | 只看该作者
窄口牛 发表于 2024-2-13 09:18
最多能检测到office16,应该重新考虑。

严格来说应该是不支持C2R版本,2016版是最后一版有msi版本的office,之后的office,无论是买断制的2019、2021,抑或是订阅制的365,都只有C2R版本
回复

使用道具 举报

22#
发表于 2024-2-14 04:19:01 | 只看该作者
iyg429 发表于 2024-2-13 14:32
如何盘点 office是否被激活 ,我遇到了一个这样的问题,一个人买了一个笔记本 试用了几天 ,然后抹除系统  ...

预装的office激活是绑定到微软账号上的,而不是绑定到主板

点评

假如说 别人买了我的笔记本 是全新未激活的 别人进到里面用自己的账号绑定office 然后再回复出厂设置 然后告诉我说 笔记本7天无条件退货 我岂不是无法防止?  详情 回复 发表于 2024-2-14 15:27
回复

使用道具 举报

23#
发表于 2024-2-14 04:22:50 | 只看该作者

这个批处理有严重缺陷,不支持检测C2R版本的office,2016版是最后一版有msi版本的office,之后的office都是C2R版本的

回复

使用道具 举报

24#
发表于 2024-2-14 04:56:33 | 只看该作者
赞,谢谢分享。
回复

使用道具 举报

25#
发表于 2024-2-14 15:27:39 | 只看该作者
htmlc4 发表于 2024-2-14 04:19
预装的office激活是绑定到微软账号上的,而不是绑定到主板

假如说 别人买了我的笔记本 是全新未激活的 别人进到里面用自己的账号绑定office 然后再回复出厂设置 然后告诉我说 笔记本7天无条件退货 我岂不是无法防止?

点评

一般来说只要联网激活了就不能7天无理由  详情 回复 发表于 2024-2-14 18:55
回复

使用道具 举报

26#
发表于 2024-2-14 18:55:51 | 只看该作者
iyg429 发表于 2024-2-14 15:27
假如说 别人买了我的笔记本 是全新未激活的 别人进到里面用自己的账号绑定office 然后再回复出厂设置 然 ...

一般来说只要联网激活了就不能7天无理由
回复

使用道具 举报

27#
发表于 2024-2-15 13:43:16 | 只看该作者
@echo off
::CMD窗口字体绿色
title %~n0
color 0a
setlocal EnableDelayedExpansion
set "m_Office版本号="
set "m_Office系统位数="
set "m_Office安装目录="

set "m_Office系统位数=64"
call :扫描注册表一级子目录并回调 "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office" ":检查激活Office"

set "m_Office系统位数=32"
call :扫描注册表一级子目录并回调 "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office" ":检查激活Office"
echo.
pause
goto :eof



:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:检查激活Office
set "m_Office版本号="
set "m_Office安装目录="
set "m_ospp文件目录="

call :查询注册表一个数值 "m_Office安装目录" "%~1\Common\InstallRoot" "Path"
if "" EQU "!m_Office安装目录!" call :查询注册表一个数值 "m_Office安装目录" "%~1\Excel\InstallRoot" "Path"
if "" EQU "!m_Office安装目录!" call :查询注册表一个数值 "m_Office安装目录" "%~1\Word\InstallRoot" "Path"
if "" NEQ "!m_Office安装目录!" if exist "!m_Office安装目录!" (
        for %%a in ( "%~1" ) do set "m_Office版本号=%%~na"
        if "\" EQU "!m_Office安装目录:~-1!" set "m_Office安装目录=!m_Office安装目录:~0,-1!"
        set "m_ospp文件目录=!m_Office安装目录!"

        cd /d "!m_Office安装目录!"
        if not exist "!m_Office安装目录!\ospp.vbs" (
                set "m_ospp文件目录="
                cd /d "..\..\Office!m_Office版本号!"
                if exist "ospp.vbs" for /f "delims=*" %%a in ( 'cd' ) do set "m_ospp文件目录=%%a"
        )

        echo.
        echo --------------------------------------------------------
        echo 准备激活:!m_Office系统位数!位 Office 20!m_Office版本号!
        echo 系统位数:!m_Office系统位数!
        echo 安装版本:!m_Office版本号!
        echo 安装路径:!m_Office安装目录!
        echo ospp文件目录:!m_ospp文件目录!

        if not exist "!m_ospp文件目录!\ospp.vbs" (
                echo 无法找到激活文件:ospp.vbs 在目录:!m_ospp文件目录!
                echo 激活失败!
                goto :eof
        )

        if "16" EQU "!m_Office版本号!" (
                call :安装2016证书
                call :安装2019证书
                call :安装2021证书
        )>nul 2>nul
        if "19" EQU "!m_Office版本号!" ( call :安装2019证书 )>nul 2>nul
        if "21" EQU "!m_Office版本号!" ( call :安装2021证书 )>nul 2>nul

        call :设置KMS服务器并激活
)
goto :eof
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:扫描注册表一级子目录并回调
rem :扫描注册表一级子目录并回调 "in"       "in"
rem :参数列表                   注册表路径 回调标签

( Reg Query "%~1" )>nul 2>nul || (
    goto :eof
)

rem if 0 NEQ %errorlevel% (
rem     goto :eof
rem )

if "" EQU "%~2" for /f "delims=*" %%a in ( 'Reg Query "%~1" ' ) do if "" NEQ "%%a" call :扫描注册表一级子目录并回调_001 "%%a" "%~1"
if "" NEQ "%~2" for /f "delims=*" %%a in ( 'Reg Query "%~1" ' ) do if "" NEQ "%%a" call :扫描注册表一级子目录并回调_002 "%%a" "%~1" "%~2"
goto :eof

:扫描注册表一级子目录并回调_001
echo x%~1 | findstr /i "%~2" >nul 2>nul && echo %~1
goto :eof
:扫描注册表一级子目录并回调_002
echo x%~1 | findstr /i "%~2" >nul 2>nul && call %~3 "%~1"
goto :eof
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:查询注册表一个数值
rem :查询注册表一个数值 "inout_ptr"       "in"       "in"   
rem :参数列表            输出的数值变量名 注册表路径 [注册表数值名,如果空则查询默认值]

( Reg Query "%~2" )>nul 2>nul || (
    goto :eof
)

if "" NEQ "%~1" set "%~1="
if "" NEQ "%~3" (
    for /f "delims=*" %%a in ( 'Reg Query "%~2" /v "%~3" ' ) do if "" NEQ "%%a" if "" NEQ "%~1" (
        set "查询注册表一个数值_临时变量=%%a"
        set "查询注册表一个数值_临时变量=!查询注册表一个数值_临时变量:    %~3    =!"
        for /f "tokens=1,* delims= " %%b in ( "!查询注册表一个数值_临时变量!" ) do set "查询注册表一个数值_输出数值=%%c"
        set "%~1=!查询注册表一个数值_输出数值!"
    )
    goto :eof
)>nul 2>nul

for /f "delims=*" %%a in ( 'Reg Query "%~2" /ve ' ) do if "" NEQ "%%a" if "" NEQ "%~1" (
        set "查询注册表一个数值_临时变量=%%a"
        set "查询注册表一个数值_临时变量=!查询注册表一个数值_临时变量:    %~3    =!"
        for /f "tokens=1,* delims= " %%b in ( "!查询注册表一个数值_临时变量!" ) do set "查询注册表一个数值_输出数值=%%c"
        set "%~1=!查询注册表一个数值_输出数值!"
)>nul 2>nul
goto :eof
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
回复

使用道具 举报

28#
发表于 2024-2-15 14:06:17 | 只看该作者
谢谢分享~批处理还是很强大的存在啊~
回复

使用道具 举报

29#
发表于 2024-2-15 19:42:55 | 只看该作者
本帖最后由 dos时代菜鸟 于 2024-2-15 20:03 编辑

如果是 64为系统 安装了 32位的office 注册表位置就会不一样了。HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Office 了解下


OFFICE_信息.7z (1.27 KB, 下载次数: 7)


点评

奇怪,用你的附件也是检查不出来 [attachimg]537889[/attachimg]  详情 回复 发表于 2024-2-20 18:47
回复

使用道具 举报

30#
发表于 2024-2-18 11:08:07 | 只看该作者
能获取品牌机自带office家庭学生版序列号吗?

点评

激活之后自动绑定到微软账户上,没必要刻意提取  详情 回复 发表于 2024-2-18 19:00
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-26 12:27

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表