"For /f delims" 명령줄을 사용하여 Office 2019 레지스트리 DisplayName을 가져오는 방법

"For /f delims" 명령줄을 사용하여 Office 2019 레지스트리 DisplayName을 가져오는 방법

Office 2019의 DisplayName "Microsoft Office Professional Plus 2019 - en-us"를 가져와서 에코하고 싶습니다.

powercell 명령을 사용하여 cmd 명령을 찾았습니다.

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

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

"for" 감지 명령줄을 사용하여 이를 얻는 방법은 무엇입니까? (Powershell 대신 "reg query"를 사용할 수도 있습니다.)

답변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

코드가 무엇을 하는지...

  • , 또는
    에서 원하는 항목을 원하지 않는 원하는 공급자 유형 목록을 작성합니다 .msunugetpowershellget
  • 설치된 항목의 목록을 작성하여
    대상 이름을 미리 알 필요가 없도록 와일드카드를 사용합니다.
  • 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

)

관련 정보