2

同じスクリプトで Windows OS と Office のバージョンを判別できるスクリプトを持っている人はいますか?

スクリプトの断片はありますが、OS と Office バージョンの両方をスクリプトに組み込む方法がわかりません。私はバットで始めましたが、詳細を提供できるように見えるのでVBSに移りましたが、誰かが以下のロジックを手伝ってくれれば、先に進むことができるかもしれません.

このようなスクリプトをセットアップする方法を知りたいです。

If Windows 7 64bit & Office 2010
    do this
If Windows XP 32bit & Office 2007
    do this  
If Windows 7 & Office 2007
    do this

Windows のバージョンを検出するためのコード -- BAT SCRIPT

Echo Please wait.... detecting Windows OS version...
ver | find "2003" > nul
if %ERRORLEVEL% == 0 goto done

ver | find "XP" > nul
if %ERRORLEVEL% == 0 goto ver_xp

ver | find "2000" > nul
if %ERRORLEVEL% == 0 goto done

ver | find "NT" > nul
if %ERRORLEVEL% == 0 goto done

if not exist %SystemRoot%\system32\systeminfo.exe goto warnthenexit

systeminfo | find "OS Name" > %TEMP%\osname.txt
FOR /F "usebackq delims=: tokens=2" %%i IN (%TEMP%\osname.txt) DO set vers=%%i

echo %vers% | find "Windows 7" > nul
if %ERRORLEVEL% == 0 goto ver_7

echo %vers% | find "Windows Server 2008" > nul
if %ERRORLEVEL% == 0 goto done

echo %vers% | find "Windows Vista" > nul
if %ERRORLEVEL% == 0 goto ver_7

goto warnthenexit
4

2 に答える 2

3

Office の部分は少し遅いですが、動作します。

これをgetversions.vbsのような名前のファイルに含めるだけです

私のコンピューターでは、次のように印刷されました。

Microsoft Windows 8 エンタープライズ

Microsoft Office 32 ビット コンポーネント 2013、バージョン 15

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

    Set colOperatingSystems = objWMIService.ExecQuery _
        ("Select * from Win32_OperatingSystem")

    For Each objOperatingSystem in colOperatingSystems
        Wscript.Echo objOperatingSystem.Caption
    Next

    Set colSoft = objWMIService.ExecQuery("SELECT * FROM Win32_Product WHERE Name Like 'Microsoft Office%'")

    If colSoft.Count = 0 Then
      wscript.echo "NO OFFFICE INSTALLED" 
    else
       For Each objItem In colSoft
          Wscript.echo objitem.caption & ", Version" & Left(objItem.Version, InStr(1,objItem.Version,".")-1)
          exit for
       Next
    End If
于 2012-12-04T18:24:39.690 に答える