我需要对超过300台计算机进行软件审核,这些计算机既不在同一网络上,也不属于同一家公司。
是否有命令或小程序(可以在没有安装的情况下运行),我可以通过电子邮件发送给最终用户,以便输出MS Windows和MS Office版本?
答案 0 :(得分:16)
获取当前Windows版本和Microsoft Office版本的一种可能方法是使用命令行查询系统注册表项。
要使用System注册表获取Windows版本,请使用以下命令:
reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion" /v "ProductName"
这将提供一个输出,可以解析以获取当前的Windows版本/名称。
要获取当前的办公室版本,请使用:
reg query "HKEY_CLASSES_ROOT\Word.Application\CurVer"
此命令的输出以数字格式(例如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
希望这会有所帮助!!
答案 1 :(得分:1)
@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及更高版本
答案 2 :(得分:0)
我用它来获取版本2003,2007,2010和2013.
Folder1/sub1folder/sub2folder/sub3folder
答案 3 :(得分:0)
还有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
答案 4 :(得分:0)
要获得Windows 10下的办公室版本,这非常优雅:
for /F "tokens=3 delims=." %%O in ('reg query HKEY_CLASSES_ROOT\Word.Application\CurVer') do set _officeVer=%%O
不需要管理员权限,也适用于xp及以上