快速命令或批处理脚本来确定 Windows 和 Office 版本

问题描述 投票:0回答:7

我需要对 300 多台计算机进行软件审核,这些计算机既不在同一网络上,也不属于同一公司。

是否有一个命令或小程序(无需安装即可运行),我可以通过电子邮件发送给最终用户运行,以输出 MS Windows 和 MS Office 版本?

windows batch-file ms-office
7个回答
18
投票

获取当前 Windows 版本和 Microsoft Office 版本的一种可能方法是使用命令行查询系统注册表项。

要使用系统注册表获取 Windows 版本,请使用以下命令:

reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion" /v "ProductName"

这将给出一个输出,可以对其进行解析以获取当前的Windows版本/名称。

要获取当前的 Office 版本,请使用:

reg query "HKEY_CLASSES_ROOT\Word.Application\CurVer"

此命令的输出以数字格式给出 Office 版本,例如 14、15 等。

解析输出以获取版本号,并与现有 Microsoft Office 版本列表进行匹配以获取已安装版本的名称:

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

希望这有帮助!!


2
投票
@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
echo %office_version%
endlocal

不需要管理员权限,适用于 Windows XP 及更高版本


1
投票

我用它来获取版本 2003、2007、2010 和 2013。

@echo off
setlocal enabledelayedexpansion

for /f "tokens=3 delims=." %%a in ('reg query "HKEY_CLASSES_ROOT\Word.Application\CurVer"') do set reg=%%a

set /a i=0
for %%b in (11 12 14 15) do (
  if %%b == %reg% goto setver
  set /a i+=1
)

:setver
set /a n=0
for %%c in (2003 2007 2010 2013) do (
  if !n! == !i! set ver=%%c && goto endloop
  set /a n+=1
)

:endloop
echo Microsoft Version: %ver%
echo.
endlocal

:end
pause

1
投票

还有 1 个使用 npocmaka 的代码,但添加了地图以使其更加用户友好:

@echo off
setlocal

call :GetOfficeVer
endlocal
exit /b

:GetOfficeVer
::@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:~-3,2!") do (
            set "off_ver=%%~nV"
            call :Map !off_ver! && exit /b
        )
)
:Map
set "v=%1"
set "map=11-2003;12-2007;14-2010;15-2013"
call set v=%%map:*%v%-=%%
set v=%v:;=&rem.%
echo Microsoft Office Version: %v%
endlocal
exit /b

1
投票

在Windows 10下获取office版本,这相当优雅:

for /F "tokens=3 delims=." %%O in ('reg query HKEY_CLASSES_ROOT\Word.Application\CurVer') do set _officeVer=%%O

不需要管理员权限,也适用于 xp 及以上版本


0
投票

我来这里不是为了检测Windows版本,我觉得其他答案已经很好地涵盖了这一点,应该是一个单独的问题。但是,在我看来,Office 就是一个窍门。以下是我检测 MS Office 版本和架构的方法。

注意:这几乎没有在两个 x32 位不同的安装上进行测试,但“应该”捕获所有这些。

@ECHO OFF
CLS
setlocal enableextensions enabledelayedexpansion
::FreeSoftwareServers.com

set key="*0FF1CE*"
set threesixtyfivekey="O365*"
set keypath=

set arrsize=1
set arg[0]="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
set arg[1]="HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall"
for /l %%n in (0,1,%arrsize%) do (
 FOR /F "tokens=* USEBACKQ" %%N IN (`REG QUERY !arg[%%n]! /f %threesixtyfivekey% /k 2^>nul`) DO (
  ECHO "%%N" | FIND /I "HKEY">Nul && (
   If %%n == 0 (
    set arch=x32
   ) ELSE (
     set arch=x64
   )
   set keypath=%%N
   goto keypathFound
  ) 
 )
 FOR /F "tokens=* USEBACKQ" %%N IN (`REG QUERY !arg[%%n]! /f %key% /k 2^>nul`) DO (
  ECHO "%%N" | FIND /I "HKEY">Nul && ( 
   If %%n == 0 (
    set arch=x32
   ) ELSE (
     set arch=x64
   ) 
   set keypath=%%N
   goto keypathFound
  ) 
 )
)
GoTo end

:keypathFound
FOR /F "skip=2 tokens=1,2* USEBACKQ" %%N IN (`reg query "%keypath%" /t REG_SZ  /v "DisplayName"`) DO (
 IF /I "%%N" == "DisplayName" (
  SET OVer=%%P%~1
  GoTo Found
 )
)

:Found
for /f "tokens=1-20 delims=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$&*()-= " %%a in ("%OVer%") do (
   IF %%a == 64 (
     set ONum=%%b
     GoTo varset
   )
   IF %%a == 32 (
     set ONum=%%b
     GoTo varset
   )
   set ONum=%%a
)

:varset
  Echo Office Number: %ONum%
  ECHO Office Display Name:  %OVer%
  ECHO Software Architecture:  %arch%
  PAUSE
:End

0
投票

不,这无法识别 64 位 Office。

© www.soinside.com 2019 - 2024. All rights reserved.