同じネットワーク上にない、または同じ会社が所有していない 300 台を超えるコンピューターのソフトウェア監査を行う必要があります。
MS Windows および MS Office のバージョンを出力するコマンドまたは小さなプログラム (インストールせずに実行できる) をエンド ユーザーにメールで送信して実行することはできますか?
同じネットワーク上にない、または同じ会社が所有していない 300 台を超えるコンピューターのソフトウェア監査を行う必要があります。
MS Windows および MS Office のバージョンを出力するコマンドまたは小さなプログラム (インストールせずに実行できる) をエンド ユーザーにメールで送信して実行することはできますか?
@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 以降で動作します
これを使用して、バージョン 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 つ 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