同じネットワーク上にない、または同じ会社が所有していない300台を超えるコンピューターのソフトウェア監査を行う必要があります。
MSWindowsおよびMSOfficeのバージョンを出力するコマンドまたは小さなプログラム(インストールせずに実行できます)をエンドユーザーに電子メールで送信して実行できますか?
現在のWindowsバージョンとMicrosoftOfficeバージョンを取得する1つの可能な方法は、コマンドラインを使用してシステムレジストリエントリをクエリすることです。
システムレジストリを使用してWindowsバージョンを取得するには、次のコマンドを使用します。
reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion" /v "ProductName"
これにより、現在のWindowsのバージョン/名前を取得するためにparsedの出力が得られます。
現在のOfficeバージョンを取得するには、次を使用します。
reg query "HKEY_CLASSES_ROOT\Word.Application\CurVer"
このコマンドの出力は、14、15などの数値形式でOfficeバージョンを提供します。
出力を解析してバージョン番号を取得し、matchを既存の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
お役に立てれば!!
@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以上
Windows 10でOfficeバージョンを入手するには、これは非常にエレガントです。
for /F "tokens=3 delims=." %%O in ('reg query HKEY_CLASSES_ROOT\Word.Application\CurVer') do set _officeVer=%%O
管理者権限を必要とせず、xp以降でも機能します
さらに、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
これを使用して、バージョン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