# Пакет |Установите идентификатор программы в переменную и удалите - PullRequest
0 голосов
/ 15 мая 2018

Я надеюсь, что кто-то может мне помочь: -)

Мне нужно удалить OpenOffice, я нашел, как я могу получить идентификатор и записать его в переменную, которая затем будет удалена через mcshes.Но я не могу написать правильное значение в переменной.

Вот мой код:

@echo on & setlocal EnableExtensions EnableDelayedExpansion

FOR /F "tokens=*"  %%i IN ('wmic product where "name like 'OpenOffice%%'" get IdentifyingNumber /format:value') Do Set id=%%~i

    echo Die ID ist %id% 

    pause

    msiexec /uninstall !id!  /quiet /norestart

    echo OpenOffice Installation Errorlevel %Errorlevel%

    pause

1 Ответ

0 голосов
/ 15 мая 2018

У вашего for /f есть две проблемы:

  1. Вы не можете заключить команду в ', а также использовать их внутри команды.(решение usebackq)
  2. вывод wmic ограничен дополнительным CR в конце строки CRCRLF
    (решение, вывод процесса с другим для или анализ содержимого, исключающий конец строки)

:: Q:\Test\2018\05\15\SO_50349950.cmd
@Echo off&SetLocal EnableExtensions EnableDelayedExpansion

for /f "usebackq tokens=2 delims={}" %%A in (
  `wmic product where "name like 'OpenOffice%%'" get IdentifyingNumber /format^:value 2^>NUL`
) Do Set "id={%%~A}"

echo Die ID ist %id% 
pause

msiexec /uninstall !id!  /quiet /norestart
echo OpenOffice Installation Errorlevel %Errorlevel%
pause

Пример выходных данных (поиск здесь настоящего LibreOffice)

Q: \ Test \ 2018 \ 05 \ 15 \ SO_50349950.cmd
Die ID ist{DD7E9D37-CA78-459A-8BA8-29BBF29CF257}
Drücken Sie eine убежденный вкус.,.

...