Bien que ce soit une vieille question, j'essaierai d'y répondre, car cela peut être utile pour les autres. Le shell de commande Windows n'a pas un moyen direct d'obtenir des métadonnées de fichier comme la version, mais vous pouvez utiliser wmic pour cela. Le principal problème est que le nom d'affichage du logiciel peut être différent dans les propriétés du fichier d'installation/mise à jour exe et celui du registre. Donc, c'est une mauvaise idée de prendre le nom des métadonnées du fichier et d'en faire une requête dans toute la ruche du registre HKLM. Aussi, si vous n'avez pas une liste prédéfinie du logiciel à mettre à jour et ne connaissez pas le chemin exact dans le registre où la version pour chacun d'eux est stockée, l'idée de boucler contre la liste d'exe pour obtenir des noms de leur l'identifiant des métadonnées est également mauvais. Donc, la meilleure façon de rechercher cela est de créer un script pour chaque exe séparément et de les ajouter au planificateur Windows. Voici un exemple du script batch requis pour automatiser les mises à jour pour Adobe Flash Player pour OS 64 bits:
@echo off
for /f %%a in ('wmic datafile where name^="C:\\Users\\username\\Downloads\\install_flash_player_19_active_x.exe" get version ^| find /n /v "" ^| findstr "^\[2\]"') do set var=%%a
for /f "tokens=2 delims=]" %%a in ("%var%") do set prver=%%a
echo Available version: %prver%
for /f "tokens=3" %%a in ('reg query "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{EE56217C-B3F9-402B-B4EC-63F090F51D3D}" /v DisplayVersion') do set regversion=%%a
echo Installed version: %regversion%
if %prver% == %regversion% (echo The newest version %regversion% installed) else (echo Update required & "C:\Users\username\Downloads\install_flash_player_19_active_x.exe")
fichier de mise à jour se trouve dans certains dossier local, dans mon cas C: \ Users \ nom d'utilisateur \ Téléchargements \ install_flash_player_19_active_x.exe. Lorsque les programmes sont installés, ils s'enregistrent dans HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ pour le système d'exploitation 64-bot et HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ pour 32 bits. Par conséquent, vous devez trouver le chemin pour chaque installation dont vous avez besoin. S'il vous plaît noter que {EE56217C-B3F9-402B-B4EC-63F090F51D3D} dans mon script est le GUID pour la version donnée de Flash Player 19.
Voici le même dans PowerShell qui est plus élégante:
$filever = (Get-Item "C:\Users\username\Downloads\install_flash_player_19_active_x.exe").versioninfo.fileversion
$appname = (Get-Item "C:\Users\username\Downloads\install_flash_player_19_active_x.exe").versioninfo.internalname
$regpath = "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{EE56217C-B3F9-402B-B4EC-63F090F51D3D}"
$regversion = Get-ItemProperty $regpath -Name "DisplayVersion" | select -ExpandProperty "DisplayVersion"
if ($winrarreg -eq $regversion) {
"The newest version of Flash Player $regpath is already installed"
} else {
"Current installed version is:" + $regversion
"Available version is:" + $filever
"Let's update Flash Player"
Start-Process -FilePath "C:\Users\username\Downloads\install_flash_player_19_active_x.exe"
}