Как выполнить действие / команду на основе результата предыдущей команды - PullRequest
1 голос
/ 30 сентября 2019

У меня есть развертывание, которое устанавливает драйвер, и я хочу предоставить возможность удаления.

Я использую инструмент PNPUTIL.exe.

Я знаю синтаксис для удаления и удаления драйвера, например:

pnputil.exe /delete-driver oem103.inf /uninstall /force

Но моя проблема в том, что обозначение числа oem * .inf является случайным на каждой машине, поэтому я могу 'Твердо закодируйте .inf в команду и вызовите его за день.

pnputil имеет переключатель /enum-driver, который предоставит вам подробную информацию обо всех драйверах в DriverStore. Среди позиций есть оригинальное имя .inf (с чем я могу работать) и связанный с ним oem #.

Итак, мне нужна помощь в написании сценариев, в которых драйверы будут перечислять результаты в команду, чтобы иметь возможность переключателей run /delete-drive и /uninstall

Я пытался связываться с Find и FindSTR команды, но она вернула только одну строку, которая была именем исходного .inf. Мне нужно, чтобы OEM-номер, связанный с оригинальным именем .inf, передавался в команду.

1 Ответ

0 голосов
/ 30 сентября 2019

При выводе pnputil желаемое oemXX.inf находится на одну строку выше оригинального имени. Нумерация выходных данных, поиск исходного имени и вычитание одного из номера строки. Это номер строки, где вы найдете oemXX.inf.

Затем найдите эту строку и извлеките строку oemXX. (for %%b - избавление от начальных пробелов)

@echo off
setlocal 
set "Orig=rt640x64.inf"
pnputil /enum-drivers |findstr /n "^" > pnputil.txt
for /f "delims=:" %%a in ('findstr /c:" %Orig%" pnputil.txt') do set /a line=%%a-1
for /f "tokens=3 delims=:" %%a in ('findstr /b "%line%:" pnputil.txt') do for %%b in (%%a) do set "oem=%%b"
echo "%oem%"

Примечание: вывод pnputil зависит от языка, но этот код не ищет слова (кроме «Оригинала»). имя «конечно», но для номеров строк, поэтому он должен работать на всех языках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...