找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 78412|回复: 23

[注册表类] [已解决]如何写一个批处理文件判断系统中office的版本,谢谢

[复制链接]
发表于 2012-6-22 15:47:00 | 显示全部楼层 |阅读模式
如题,如何写一个批处理文件判断office的版本,例如没有安装office则提示条件不满足,office2003以下则提示office版本太低,office2003以上则提示条件满足。谢谢了。小弟小白,大侠轻喷

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2012-6-22 15:52:36 | 显示全部楼层
用reg query命令检查注册表
HKEY_CURRENT_USER\Software\Microsoft\Office
 楼主| 发表于 2012-6-22 15:55:33 | 显示全部楼层
谢谢forfiles,但是,如果没安装office,注册表中上述路径是不存在的,对吗?而且关键的是我想判断出office的版本然后给出不同的动作
发表于 2012-6-22 15:56:15 | 显示全部楼层
网上搜到的一个代码
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /l %%a in (8,1,12) do (
  4.     reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\%%a.0\Common\LanguageResources /v SKULanguage>nul 2>nul
  5.     if !errorlevel!==0 (
  6.         if %%a==8 (
  7.             set OffiVer=Office 97
  8.         ) else if %%a==9 (
  9.             set OffiVer=Office 2000
  10.         ) else if %%a==10 (
  11.             set OffiVer=Office XP
  12.         ) else if %%a==11 (
  13.             set OffiVer=Office 2003
  14.         ) else if %%a==12 (
  15.             set OffiVer=Office 2007
  16.         ) else (
  17.             set OffiVer=其它
  18.         )
  19.     )
  20. )
  21. for /f "tokens=2 delims=x" %%a in ('reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\Common\LanguageResources /v SKULanguage') do (
  22.     if %%a==409 (
  23.         set OffiLan=英文
  24.     ) else if %%a==2052 (
  25.         set OffiLan=中文
  26.     ) else (
  27.         set OffiLan=其它
  28.     )
  29. )
  30. echo Office版本:%OffiVer%
  31. echo Office语言版本:%OffiLan%
  32. pause
复制代码
 楼主| 发表于 2012-6-22 16:04:42 | 显示全部楼层
再次感谢forfiles,上面的代码我试了一下,在我的本机上不能执行,更准确的说是一闪而过(我的机器装了office2010)。因为自己小白一个,不清楚为什么。还有上面的代码没交代如果客户机没有安装office会怎样,是回馈 “其它”?
发表于 2012-6-22 16:40:40 | 显示全部楼层
回复 5# btfisher


开始,运行,regedit
看看这个分支下面是版本是不是13.0
HKEY_CURRENT_USER\Software\Microsoft\Office
 楼主| 发表于 2012-6-22 17:26:06 | 显示全部楼层
回复 6# forfiles
哈哈,我本机是14.0,这个正常也能看到。现在的关键是我想做成一个批处理给其他人(客户端,很多)使用检查自己的软件环境,而不能通过手工开始---运行....(你知道我要让客户端都去手工检查的话他们非把我扁死不可)
发表于 2012-6-22 17:57:10 | 显示全部楼层
回复 7# btfisher
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /l %%a in (8,1,14) do (
  4.     reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\%%a.0\Common\LanguageResources /v SKULanguage>nul 2>nul
  5.     if !errorlevel!==0 (
  6.         if %%a==8 (
  7.             set OffiVer=Office 97
  8.         ) else if %%a==9 (
  9.             set OffiVer=Office 2000
  10.         ) else if %%a==10 (
  11.             set OffiVer=Office XP
  12.         ) else if %%a==11 (
  13.             set OffiVer=Office 2003
  14.         ) else if %%a==12 (
  15.             set OffiVer=Office 2007
  16.         ) else if %%a==14 (
  17.             set OffiVer=Office 2010
  18.         ) else (
  19.             set OffiVer=没有安装
  20.         )
  21.     )
  22. )
  23. echo Office版本:%OffiVer%
  24. pause
复制代码

评分

参与人数 2技术 +2 收起 理由
btfisher + 1 good
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2012-6-24 17:48:19 | 显示全部楼层
回复 8# forfiles
感谢,非常感谢!前两天出去了没看见,今天回来看见,感动啊。谢谢您。
 楼主| 发表于 2012-6-24 17:48:43 | 显示全部楼层
forfiles,好人啊,谢谢!
发表于 2012-6-24 18:15:08 | 显示全部楼层
回复 9# btfisher


    每个回帖的右下角有个“评分”,你试试。
发表于 2012-8-23 10:15:32 | 显示全部楼层
如果判斷後還要繼續運行程序的話該怎麼寫?

謝謝
发表于 2012-8-24 08:20:15 | 显示全部楼层
回复 12# 飛雪


    用if命令做判断
发表于 2012-8-24 08:37:46 | 显示全部楼层
回复 13# forfiles


因為是想要運行載卸程序,但微軟官方有2003、2007、2010
用IF我只能弄出兩個來,煩請指點,謝謝!
发表于 2012-8-24 12:48:44 | 显示全部楼层
例如說我要判斷版本後運行 MicrosoftFixit50154.msi 或 MicrosoftFixit50416.msi 或 MicrosoftFixit50450.msi
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 14:13 , Processed in 0.021928 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表