批处理脚本检测Microsoft Office最新版本失效求助
修复Office版本检测的批处理脚本
你的脚本存在几个核心问题,导致无法正常工作:
- 注册表路径错误:正确路径是
HKEY_LOCAL_MACHINE(原脚本写为HKEY_LOCALMACHINE,缺少下划线) - 未实际获取注册表值:你直接用键名
VersionToReport和版本号比较,没有提取该键对应的实际版本数据 - 标签跳转逻辑漏洞:执行完
:hello后会继续执行:heyo的代码,无法实现分支输出
以下是修复后的完整脚本,同时兼容32位/64位系统下的Office安装:
@echo off set "targetVersion=16.0.10396.20023" set "officeVersion=" :: 读取64位Office注册表路径的版本号 for /f "tokens=3" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\Configuration" /v VersionToReport 2^>nul') do ( set "officeVersion=%%a" ) :: 若未读取到,尝试读取32位Office在64位系统中的注册表路径 if not defined officeVersion ( for /f "tokens=3" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\ClickToRun\Configuration" /v VersionToReport 2^>nul') do ( set "officeVersion=%%a" ) ) :: 对比版本并输出结果 if "%officeVersion%" equ "%targetVersion%" ( echo hello ) else ( echo heyo )
关键说明
@echo off:关闭命令回显,让输出仅显示结果2^>nul:屏蔽注册表路径不存在时的错误提示,避免干扰输出for /f "tokens=3":提取reg query输出中第三列的版本值(reg查询结果格式为键名 类型 值)- 双路径检测:覆盖64位系统中安装32位Office的场景,避免漏检
内容的提问来源于stack exchange,提问作者Justin Lee
相关产品推荐
相关产品推荐

