You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:获取OpenOffice产品ID并赋值变量以实现静默卸载的问题

解决WMIC获取OpenOffice产品ID并赋值变量失败的问题

我来帮你搞定这个卸载OpenOffice的问题!你的代码里有几个小细节没处理好,导致产品ID没能正确赋值给变量,咱们来一步步修正:

问题分析

  1. WMIC的输出包含多余的空行和IdentifyingNumber=前缀,直接赋值会把无效内容也带进去
  2. 你在echo Die ID ist %id%里用了%id%,但因为开启了延迟扩展,循环内的变量更新需要用!id!才能实时读取
  3. WMIC输出的是Unicode格式,偶尔会产生额外的特殊字符,需要过滤

修正后的代码

@echo on & setlocal EnableExtensions EnableDelayedExpansion
:: 过滤有效行并提取纯ID值
FOR /F "tokens=2 delims==" %%i IN ('wmic product where "name like 'OpenOffice%%'" get IdentifyingNumber /format:value ^| findstr /r "^IdentifyingNumber"') Do (
    Set "id=%%i"
    :: 去除可能的尾部空格/换行符
    Set "id=!id: =!"
)
echo Die ID ist !id!
pause
:: 确认ID有效再执行卸载
if not "!id!"=="" (
    msiexec /uninstall !id! /quiet /norestart
    echo OpenOffice Installation Errorlevel %Errorlevel%
) else (
    echo 未找到OpenOffice的产品ID!
)
pause
endlocal

关键改动说明

  • 用findstr /r "^IdentifyingNumber"过滤掉WMIC输出的空行和无效内容,只保留带产品ID的行
  • 通过tokens=2 delims==直接提取等号后面的纯ID字符串,去掉IdentifyingNumber=前缀
  • 增加Set "id=!id: =!"去除ID可能带有的尾部空格或换行符,避免msiexec识别失败
  • 用if not "!id!"==""做判断,防止ID为空时执行无效的卸载命令
  • 循环内的变量读取统一用!id!,利用延迟扩展获取实时更新的变量值

这样修改后,就能正确获取OpenOffice的产品ID并完成静默卸载了。

内容的提问来源于stack exchange,提问作者JustGo1909

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:54:39