获取Office Version 2019的批处理脚本

Batch script to get Office Version 2019

我一直在使用别人分享的代码,我想感谢他们,但我不知道是谁做的。 但是我的代码运行良好,可以获取所有 Office 版本,但我无法使用它来执行 Office 2019。

我希望有人知道要添加的额外行以使其正常工作....

当我在 2019 年之前 运行 它时,它很好。但在 2019 年,它会与桌面一起回归。

    cls
@echo off

setlocal enableDelayedExpansion
for /f "tokens=2 delims==" %%O in ('ftype ^|findstr /r /I "\OFFICE[0-9]*" 2^>nul') do (
    set "verp=%%~O"
    goto :end_for
)
:end_for

for %%P in (%verp%) do (
    set "off_path=%%~dpP"
    for %%V in ("!off_path:~0,-1!") do (

     set "office_version=%%~nV"
     goto :end_for2
    )
)
:end_for2

if [%office_version%] == [] echo No Office installed & goto end
echo %office_version%

:end
endlocal

pause

@
TimeOut /t 5 1>Nul

pause

我很想知道以下改编代码输出的内容。它是为早期版本的 Office 编写的,我已经猜测了对最新版本所做的更改。

@Echo Off & Setlocal EnableExtensions DisableDelayedExpansion
If Defined PROCESSOR_ARCHITEW6432 (
    Start "" /D "%__CD__%" "%SystemRoot%\SysNative\cmd.exe" /C "%~f0" & Exit /B)
Set /A "OSA=MWB=%PROCESSOR_ARCHITECTURE:~-2%"
If %OSA% Equ 86 Set "MWB=32"
Set "REG=%__AppDir__%reg.exe"
Call :Chk
If Not Defined MOB If %MWB% Equ 64 Call :Chk \Wow6432Node
If Not Defined MOB (Echo Microsoft Office product not installed & GoTo EndIt
) Else If Not Defined IOV (Echo Unable to determine Microsoft Office version
    GoTo EndIt)
Echo %MWB%-bit OS with an Office %IOV% %MOB%-bit product installed in %OIL%

:EndIt
Setlocal EnableDelayedExpansion & For /F "Tokens=1,2" %%G In ("!CMDCMDLINE!"
) Do Endlocal & If /I "%%~nG" == "cmd" If /I "%%~H" == "/c" Pause
GoTo :EOF

:Chk
Set "GUID=" & Set "IOV=" & Set "MOB=" & Set "OIL="
Set "Key=HKLM\Software%1\Microsoft\Windows\CurrentVersion\Uninstall"
For /F Delims^= %%G In ('%REG% Query "%Key%" /K /F "*-001B-*0FF1CE}" 2^>NUL'
) Do Set "GUID=%%~nxG" & GoTo Next

:Next
If Not "%GUID:~-1%"=="}" Set "GUID="
If Not Defined GUID Exit /B
Set "MOB=32" & If "%GUID:~20,1%" == "1" Set "MOB=64"
If "%GUID:~4,1%" == "2" Set "IOV= 2007"
If "%GUID:~4,1%" == "4" Set "IOV= 2010"
If "%GUID:~4,1%" == "5" Set "IOV= 2013"
If "%GUID:~4,1%" == "6" Set "IOV= 2016"
If "%GUID:~4,1%" == "7" Set "IOV= 2019"
For /F Tokens^=2* %%G In ('%REG% Query "%Key%\%GUID%" /V "InstallLocation"
 2^>NUL') Do Set "OIL=%%H"
If Not Defined OIL Set "OIL=an unknown location"
Exit /B

*请注意,这是为了使用 Microsoft Word 的数据而设计的,因为我决定每个安装 Office 的人都会安装 Word。因此,它应该适用于 Word 2007 以上版本,以及 2007 以上的任何 Office 版本(将 Word 作为组件安装)。