これは古い質問ですが、他の人にとって役立つかもしれないので、答えようと思います。Windows コマンド シェルには、バージョンなどのファイル メタデータを直接取得する方法はありませんが、wmic を使用できます。主な問題は、ソフトウェアの表示名が、インストール/更新 exe ファイルのプロパティとレジストリ内の名前と異なる場合があることです。そのため、ファイル メタデータから名前を取得し、HKLM レジストリ ハイブ全体でクエリを実行するのはお勧めできません。また、更新するソフトウェアの事前定義されたリストがなく、それぞれのバージョンが保存されているレジストリ内の正確なパスがわからない場合は、exe のリストに対してループしてメタデータから名前を取得するというアイデアがあります。 idも悪い。
したがって、それを検索する最善の方法は、各 exe のスクリプトを個別に作成し、それらを Windows スケジューラに追加することです。64 ビット OS 用の Adobe Flash Player の更新を自動化するために必要なバッチ スクリプトの例を次に示します。
@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")
更新ファイルはローカル フォルダーにあります。私の場合は C:\Users\username\Downloads\install_flash_player_19_active_x.exe です。プログラムがインストールされると、64 ボット OS の場合は HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\ に、32 ビットの場合は HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ に登録されます。
したがって、必要なすべてのインストールのパスを見つける必要があります。私のスクリプトの {EE56217C-B3F9-402B-B4EC-63F090F51D3D} は、Flash Player 19 の特定のバージョンの GUID であることに注意してください。
これは、よりエレガントな PowerShell でも同じです。
$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"
}