web-dev-qa-db-ja.com

WindowsとOfficeのバージョンを判別するためのクイックコマンドまたはバッチスクリプト

同じネットワーク上にない、または同じ会社が所有していない300台を超えるコンピューターのソフトウェア監査を行う必要があります。

MSWindowsおよびMSOfficeのバージョンを出力するコマンドまたは小さなプログラム(インストールせずに実行できます)をエンドユーザーに電子メールで送信して実行できますか?

6
Reece

現在の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

お役に立てれば!!

16
r3ap3r
@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
npocmaka

Windows 10でOfficeバージョンを入手するには、これは非常にエレガントです。

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

管理者権限を必要とせず、xp以降でも機能します

0
Alex Metcalfe

さらに、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
0
Matt Williamson

これを使用して、バージョン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
0
Helper