web-dev-qa-db-fra.com

commande rapide ou script batch pour déterminer la version de Windows et Office

Je dois effectuer un audit logiciel de plus de 300 ordinateurs qui ne sont ni sur le même réseau ni détenus par la même entreprise.

Existe-t-il une commande ou un petit programme (pouvant être exécuté sans installation) que je puisse envoyer par courrier électronique aux utilisateurs finaux à exécuter, qui générera les versions MS Windows et MS Office?

6
Reece

Un moyen possible d'obtenir la version actuelle de Windows et la version de Microsoft Office consiste à interroger les entrées du registre système à l'aide de la ligne de commande.

Pour obtenir la version de Windows à l'aide du registre système, utilisez la commande suivante:

reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion" /v "ProductName"

Cela donnera un résultat qui peut être analysé pour obtenir la version/le nom actuel de Windows.

Pour obtenir la version actuelle du bureau, utilisez:

reg query "HKEY_CLASSES_ROOT\Word.Application\CurVer"

La sortie de cette commande donne la version de bureau sous forme numérique telle que 14, 15, etc.

Analyser la sortie pour obtenir le numéro de version et match avec la liste des versions existantes de Microsoft Office pour obtenir le nom de la version installée:

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

J'espère que cela t'aides!!

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

ne nécessite PAS d'autorisations d'administrateur et fonctionne sous Windows XP et supérieur

1
npocmaka

Pour obtenir la version bureautique sous Windows 10, ceci est assez élégant:

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

Ne nécessite pas de droits d'administrateur et fonctionne aussi sur xp et supérieur

0
Alex Metcalfe

Et 1 autre utilisant le code de npocmaka mais en ajoutant une carte pour la rendre plus conviviale:

@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

J'utilise ceci pour récupérer les versions 2003, 2007, 2010 et 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