Cmd 如何基于上一个命令的结果运行操作/命令

Cmd 如何基于上一个命令的结果运行操作/命令,cmd,scripting,driver,sccm,Cmd,Scripting,Driver,Sccm,我有一个安装驱动程序的部署,我想提供卸载功能 我正在利用PNPUTIL.exe工具 我知道删除和卸载驱动程序的语法,例如: pnputil.exe /delete-driver oem103.inf /uninstall /force 但我的问题是,oem*.inf编号在每台机器上都是随机的,因此我无法将.inf硬编码到命令中,并在一天内调用它 pnputil具有/enum driver开关,该开关将为您提供DriverStore中所有驱动程序的详细信息。行项目中有.inf的原始名称(我可以使

我有一个安装驱动程序的部署,我想提供卸载功能

我正在利用PNPUTIL.exe工具

我知道删除和卸载驱动程序的语法,例如:

pnputil.exe /delete-driver oem103.inf /uninstall /force
但我的问题是,oem*.inf编号在每台机器上都是随机的,因此我无法将.inf硬编码到命令中,并在一天内调用它

pnputil具有
/enum driver
开关,该开关将为您提供DriverStore中所有驱动程序的详细信息。行项目中有.inf的原始名称(我可以使用它)和与其关联的oem

因此,我需要的帮助是编写一些脚本,这些脚本将枚举驱动程序,并将结果通过管道传输到命令,以便
运行/删除驱动器
/uninstall
开关


我试着处理
Find
FindSTR
命令,但它只返回了一行原始.inf的名称。我需要将与.inf的原始名称关联的OEM#通过管道传输到命令

pnputil
的输出中,所需的
oemXX.inf
在原始名称上方一行。 因此,计算输出,查找原始名称并从行号中减去一。这是找到oemXX.inf的行号

然后找到该行并提取
oemXX
字符串。(%%b的
是为了去掉前导空格)


注意:
pnputil
的输出取决于语言,但此代码不查找单词(当然“原始名称”除外),而是查找行号,因此它应适用于所有语言。

pnputil
的输出中,所需的
oemXX.inf
比原始名称高一行。 因此,计算输出,查找原始名称并从行号中减去一。这是找到oemXX.inf的行号

然后找到该行并提取
oemXX
字符串。(%%b的
是为了去掉前导空格)


注意:
pnputil
的输出取决于语言,但此代码不查找单词(当然“原始名称”除外),而是查找行号,因此它应该适用于所有语言。

Dude!谢谢你,我的想法是对的,但离这不远。真的很感激!这就成功了!伙计!谢谢你,我的想法是对的,但离这不远。真的很感激!这就成功了!
@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%"