批处理脚本并获取找到的键的输出值

批处理脚本并获取找到的键的输出值

在 CMD 提示符下一切正常,但是,我需要放入一个 bat 文件来运行,但无法获取 Reg Query cmd 的输出,然后从中运行另一个查询。

由于我要查找的是应用程序 ID,并且它可以更改,所以我需要找到其余的密钥,在命令提示符中输入以下命令可以得到我需要的内容:

REG Query HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall /F "APP_NAME" /E /S

给我所需的密钥,例如:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\{398E49A0-84CA-43B5-A926-42EF68619E91}

从那里我可以运行另一个命令来获取卸载命令:

REG Query HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\{398E49A0-84CA-43B5-A926-42EF68619E91} /V "UninstallString"

我尝试了我在网站上看到的方法,for \f token....但它并没有给我第一个字符串,即使跳过了。我也无法以某种方式分配它。我需要类似的东西:

set Full_Key = reg query...
set Uninstall_CMD = Full_Key "/V Uninstallstring"

我知道一旦找到,就只会有 1 个条目。

答案1

经过大量的功课和翻阅旧书,我终于搞定了。在这里发布代码,以防有人需要在网络上卸载与我相同的应用程序,或者需要一个起点。

我必须解决的主要问题是找到应用程序 ID,然后从注册表中获取卸载字符串,因为没有典型的卸载文件。

可能不是最好看的代码,但确实有效。

rem First Check To See If The App Is Even Installed, In My Case, It May Not Be A Dell Box, Or We Already Uninstalled

REG Query %Computer%HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall /F "Dell SupportAssist" /E /D /S > NUL
Rem If We have Error, It Is Not There, Bail Out
if errorlevel 1 exit
rem The Key Is Found, So It Must Be Installed, So Get The Full Key, By Searching For The App Name
FOR /F "tokens=*" %%A IN ('REG Query %Computer%HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall /F "Dell SupportAssist" /E /D /S 2^>NUL ^| FINDSTR /R /C:"HKEY_"') DO (
rem Now We Have The Full Key From Above, Grab The Uninstall Command And Run It
FOR /F "tokens=2*" %%B IN ('REG Query "%Computer%%%~A" /F UninstallString /V /E ^| FIND /I " UninstallString "') DO %%C% /qn

)

相关内容