无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 5990|回复: 19
打印 上一主题 下一主题

[已解决] 求一个VBS脚本:根据“系统版本号+32/64位系统”分别运行相应程序

[复制链接]
跳转到指定楼层
1#
发表于 2016-6-16 23:50:43 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 netmjwork 于 2016-6-26 09:19 编辑

求一个VBS脚本:自动判断“系统版本号+32/64位系统” ,然后分别运行相应程序

比如:(根据版本号来判断系统类型,5.1、5.2是XP,6.3是win8.1,10.0是win10 )

当判断当前系统是“winxp_x32”时运行 A.exe

当判断当前系统是“win8.1_x32”时运行 B.exe

当判断当前系统是“win10_x64”时运行 C.exe
2#
 楼主| 发表于 2016-6-17 13:54:26 | 显示全部楼层
lkflsj 发表于 2016-6-17 12:31
strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2" ...

谢谢!
这个是显示版本号的,但是怎么组合到一起实现我希望的效果呢?水平有限,不会“组合”……
帮忙举一个完整的实例,多谢了!

当判断当前系统是“win10_x64”时运行 C.exe

点评

汗,把 wscript.echo "windows visita"之类的改为你wscript.run 你的的程序。 我不记得你会写run的吗,你上次提问的脚本里面就有。  详情 回复 发表于 2016-6-18 16:34
回复

使用道具 举报

3#
 楼主| 发表于 2016-6-17 13:55:12 | 显示全部楼层
2010siril 发表于 2016-6-17 12:14
类似的我弄过,   贴出来供参考:

Set wshshell=wscript.createobject("wscript.shell")

现在就缺怎么把版本号和32/64的判断组合到一起……
回复

使用道具 举报

4#
 楼主| 发表于 2016-6-19 12:39:36 | 显示全部楼层
pogua007 发表于 2016-6-18 16:34
汗,把  wscript.echo "windows visita"之类的改为你wscript.run 你的的程序。
我不记得你会写run的吗, ...

多谢回复~

case "5.1.2600"
    wscript.echo "Windows XP"
改成:
case "5.1.2600"
    wscript.run 程序  ……

但是这样只能实现:判断是什么系统,我来运行什么程序

我希望的效果是:判断是什么系统,并且是32位还是64位,同时满足了再运行什么程序,这个我不知道怎么组合……

点评

.SystemType,属性是判断系统是否64位的,我把3楼和6楼的脚本改一下  详情 回复 发表于 2016-6-19 14:35
回复

使用道具 举报

5#
 楼主| 发表于 2016-6-19 18:15:07 | 显示全部楼层
pogua007 发表于 2016-6-19 14:35
.SystemType,属性是判断系统是否64位的,我把3楼和6楼的脚本改一下

把select case写到Function(函 ...

确实刚开始接触,很多地方不太懂,只能从简易的来入手……
方便的话给下“把select case写到Function(函数)里面”的代码,学习学习怎么来简化,多谢!
回复

使用道具 举报

6#
 楼主| 发表于 2016-6-20 11:11:40 | 显示全部楼层
pogua007 发表于 2016-6-19 14:35
.SystemType,属性是判断系统是否64位的,我把3楼和6楼的脚本改一下

把select case写到Function(函 ...

您好,刚测试,无法运行,XP系统

7行报错: 对象不支持此属性或方法 'objitem.SystemType'

点评

我在整我的WES7+bblean,整的正happy,突然虚拟磁盘文件损坏,我把虚拟磁盘拆开,也没有恢复的了数据。 玩了两天游戏,才从数据损坏的打击中恢复。  详情 回复 发表于 2016-6-20 15:43
回复

使用道具 举报

7#
 楼主| 发表于 2016-6-21 16:12:30 | 显示全部楼层
pogua007 发表于 2016-6-20 15:43
我在整我的WES7+bblean,整的正happy,突然虚拟磁盘文件损坏,我把虚拟磁盘拆开,也没有恢复的了数据。 ...

虚拟磁盘操作还得随时备份数据,raid这种都需要小心操作,都是不好恢复数据的……
调整好心情~

另,我这里没法运行,上半段运行报错: 类型不匹配 'OSver' ; 下半段儿单独放一个空的vbs运行没有任何提示……
也可能我不会用……

多谢您的帮助~

点评

汗!那是一整个的脚本,你给拆开,当然报错。 主程序就前面的5行,后面两个Function都是主程序的子过程。你把OSver过程删掉,当然出错,后面的Function没有主程序也当然没有反应。  详情 回复 发表于 2016-6-21 17:54
回复

使用道具 举报

8#
 楼主| 发表于 2016-6-21 18:30:39 | 显示全部楼层
pogua007 发表于 2016-6-21 17:54
汗!那是一整个的脚本,你给拆开,当然报错。
主程序就前面的5行,后面两个Function都是主程序的子过 ...

这次明白了,新手容易闹笑话,呵呵……

多谢!
回复

使用道具 举报

9#
 楼主| 发表于 2016-6-21 19:07:08 | 显示全部楼层
本帖最后由 netmjwork 于 2016-6-21 19:19 编辑
pogua007 发表于 2016-6-21 17:54
汗!那是一整个的脚本,你给拆开,当然报错。
主程序就前面的5行,后面两个Function都是主程序的子过 ...


刚发现一个问题:版本号能不能不那么精确的来判断?只判断前面大的数字即可

比如:                case "5.1.2600"   就必须完全是这个值才行,如果是 case "5.1."就不行了
之前在dos里的批处理就是“ver|find "5.1." >nul&&set "v=xp"”  这样写的,不管“5.1.”后面的数字多少,都判断为xp系统

怎么实现:只判断前面能判断系统类型就行了,后面的build号不用判断,这样方便,win10的build 更多,一是不知道有多少版本,二来全部写也比较麻烦


另外:您下面这句起什么作用呢,怎么来应用,是不是能够替换 if then 的效果?
wsh.run OSver(strComputer) & X86orX64(strComputer) & ".exe"

点评

运行程序啊, OSver(strComputer)传递参数strComputer给Function OSver,获得返回字符串系统版本,X86orX64(strComputer)传递参数传递参数strComputer给Function X86orX64获得返回字符串"_x86"或者"_x64"。 你把这  详情 回复 发表于 2016-6-21 20:27
回复

使用道具 举报

10#
 楼主| 发表于 2016-6-21 21:47:53 | 显示全部楼层
pogua007 发表于 2016-6-21 20:27
运行程序啊, OSver(strComputer)传递参数strComputer给Function OSver,获得返回字符串系统版本,X86orX ...

非常感谢!

我再添加命令就可以用了,跟您学习不少~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-6-27 06:42

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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