用于标识已安装的Office版本的脚本。将其设置为具有相应MS Office名称的变量

时间:2016-10-18 11:55:16

标签: batch-file cmd

美好的一天。

我试图编写一个批处理文件,该文件提取一般系统信息,并在以后将它们写入最后的.txt文件。 到目前为止,我已经编写了批处理文件来提取几个细节,但我仍然坚持确定安装的Office版本。我找到了3年前的一个帖子 - (quick command or batch script to determine Windows and Office version) - 详细说明了获取版本号所需的命令,但我不知道如何将其合并,因为我仍然非常学习者在脚本方面。我可以很容易地添加该链接中建议的命令,但它并没有给我输出我真正想看到的输出。当使用该命令时,我得到了答案

HKEY_CLASSES_ROOT\Word.Application\CurVer
    (Default)    REG_SZ    Word.Application.15

因为它将其检测为Word.Application.15,这意味着它的Office 2013.

我试图在这里实现的是,如果答案是Word.Application.15,它应该设置一个名为" officeversion"的变量。如Office 2013.如果它的Word.Application.16分别应该是Office 2016并将其设置为名为" officeversion"的变量。

为方便起见,这是版本图表。

Office 97   -  7.0
Office 98   -  8.0
Office 2000 -  9.0
Office XP   - 10.0
Office 2003 - 11.0
Office 2007 - 12.0
Office 2010 - 14.0 
Office 2013 - 15.0
Office 2016 - 16.0

如果有人可以提供帮助,我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

这是我写过的一些可能有帮助的内容,我从未安装过Office产品,因此未经测试

@Echo Off & SetLocal

Echo=%PROCESSOR_ARCHITECTURE% %PROCESSOR_ARCHITEW6432%|Find "64">Nul&&(
    Set "KEY=\Wow6432Node" & Set "MWB=64")||(Set "MWB=32" & Set "MOB=32")
Set "KEY=HKLM\Software%KEY%\Microsoft\Windows\CurrentVersion\Uninstall"

Set "GUID="
For /f "Delims=" %%a In ('Reg Query %KEY% /k /f "*-001B-*0FF1CE}"') Do (
    If Not Defined GUID Set "GUID=%%~nxa")
If %GUID:~-1% NEq } Set "GUID="
If Not Defined GUID (Echo= Unable to find Office Product & GoTo :EndIt)

If %GUID:~4,1% Equ 4 Set "IOV=10" Else (If %GUID:~4,1% Equ 2 (Set "IOV=07"
    If Not Defined MOB Set "MOB=32") Else (If %GUID:~4,1% Equ 5 (Set "IOV=13"
        ) Else (If %GUID:~4,1% Equ 6 Set "IOV=16")))

If Not Defined IOV (Echo= Unknown Office version on your %MWB%-bit OS
    GoTo :EndIt)

If %GUID:~20,1% NEq 1 Set "MOB=32"
If Not Defined MOB Set "MOB=64"

Echo=&Echo= Office 20%IOV% %MOB%-bit Product installed on a %MWB%-bit OS

:EndIt
Timeout 5 1>Nul