如何使用「For /f delims」命令列取得 Office 2019 註冊表顯示名稱

如何使用「For /f delims」命令列取得 Office 2019 註冊表顯示名稱

我想取得 Office 2019 的 DisplayName「Microsoft Office Professional Plus 2019 - en-us」並回顯它。

我發現cmd指令使用powercell指令。

Powershell /command "Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ProPlus2019Volume* | Select-Object DisplayName"

DisplayName
-----------
Microsoft Office Professional Plus 2019 - en-us

如何使用命令列“for”檢測來獲取它? (您也可以使用“reg query”代替 powershell。)

答案1

假設您的實際意圖是使用這些名稱的一組模式來獲取已安裝應用程式名稱的列表,這將做到這一點。它還假定應用程式是透過常用方法安裝的,例如使用 MSI 檔案或套件管理。 [咧嘴笑]

代碼 ...

$PackageProviderList = @(
    'msi'
    'programs'
    )
$TargetAppList = @(
    'libreoffice*'
    'microsoft visual c*'
    )

$FoundAppList = (Get-Package -ProviderName $PackageProviderList -Name $TargetAppList).Name |
    Sort-Object

$FoundAppList

此時我的系統上的輸出...

LibreOffice 7.2 Help Pack (English (United States))
LibreOffice 7.2.2.2
Microsoft Visual C++ 2015-2022 Redistributable (x64) - 14.30.30704
Microsoft Visual C++ 2015-2022 Redistributable (x86) - 14.30.30704
Microsoft Visual C++ 2022 X64 Additional Runtime - 14.30.30704
Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.30.30704
Microsoft Visual C++ 2022 X86 Additional Runtime - 14.30.30704
Microsoft Visual C++ 2022 X86 Minimum Runtime - 14.30.30704

代碼的作用...


  • 建立我不想要來自msunuget或 的內容的所需提供者類型的清單powershellget
  • 建立要查找的已安裝內容的列表,
    它使用通配符以避免必須事先知道目標名稱。
  • 運行Get-Package以取得匹配安裝的列表
  • .Name從結果中的屬性中取得值
  • 對清單進行排序
  • 將其儲存在 $Var 中
  • 在螢幕上顯示該列表

答案2

set Office2019ProductReg="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ProPlus2019Volume - en-us"

for /f "usebackq tokens=1-2*" %%a in (`"reg query %Office2019ProductReg% /v DisplayName|find /i "DisplayName""`) do (
set office_ProductName=%%c

相關內容