获取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 作为组件安装)。
我一直在使用别人分享的代码,我想感谢他们,但我不知道是谁做的。 但是我的代码运行良好,可以获取所有 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 作为组件安装)。