【问题标题】:Uninstall software with a non constant installation directory path [duplicate]卸载具有非恒定安装目录路径的软件[重复]
【发布时间】:2019-07-17 15:10:53
【问题描述】:

我正在尝试写一个 来卸载GoToMeeting

目前我使用以下卸载当前版本:

echo UnInstalling GoToMeeting........
"C:\Program Files (x86)\GoToMeeting\13190\G2MUninstall.exe" /uninstall -silent

问题是,每次安装新版本时,安装目录都会发生变化。例如,版本是13190,但之前的版本是1302212771。所以我实际上必须为每个版本添加一行,这真的很烦人。

有没有办法在卸载过程中使用 使目录成为通配符?

【问题讨论】:

  • 您是否考虑过将注册表的卸载部分HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ProgName 解析为InstallLocation 或更好的是UninstallString
  • 打开命令提示符窗口并运行for /F "delims=" %I in ('dir "%ProgramFiles(x86)%\GoToMeeting\G2MUninstall.exe" /A-D /B /S 2^>nul') do @echo "%I"。在同一命令提示符窗口中打开dir /? 并阅读输出帮助以及for /? 并再次阅读输出帮助。删除命令echo 将导致执行找到的卸载程序可执行文件。另请参阅有关 application registration 的 Microsoft 文档。也许有更好的方法来确定是否安装了应用程序 GoToMeeting 以及安装位置。
  • 这个怎么样:for /D%%D in ("%ProgramFiles(x86)%\GoToMeeting\*") do "%%~D\G2MUninstall.exe" /uninstall /silent?

标签: batch-file batch-file batch-file cmd wildcard


【解决方案1】:

抱歉,除非在路径或文件名的最后一个元素中,否则不允许使用通配符。

改为使用for /d 循环来列出某个目录的所有子目录:

for /d %%D in ("C:\Program Files (x86)\GoToMeeting\*") do (
   echo the file you look for is "%%D\G2MUninstall.exe"
)

奖励:如果安装了多个版本,则会找到所有版本

【讨论】:

    猜你喜欢
    • 2015-03-25
    • 2021-10-17
    • 2022-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-14
    • 1970-01-01
    相关资源
    最近更新 更多