楼 主
请教高手,能否用批处理获取Windows的版本信息?
发表于 2004-01-16 00:00 · 中国 广东 深圳 鹏博士宽带
初级用户
★
积分 197
发帖 21
注册 2004-01-09 00:00
22年会员
UID 15212
性别 男
状态 离线
经常制作各种批处理程序应用到不同的机上,有时需要对不同的系统进行不同的操作,请问如何用批处理实现获取 windows 的版本信息(要能通用)?
在 windows 中我用安装制作程序 CreatInstall 2000 定义宏从注册表中获取值,可以实现,但在批处理中不知能否实现?
第 2 楼
发表于 2004-01-16 00:00 · 加拿大 安大略省 多伦多
系统支持
★★★★★★
“新DOS时代”站长
积分 27,736
发帖 10,521
注册 2002-10-09 12:00
23年会员
UID 9
状态 离线
DOS下吗?试试WINVER命令。
Wengier - 新DOS时代
欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/
E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

第 3 楼
发表于 2004-01-18 00:00 · 中国 广东 深圳 鹏博士宽带
初级用户
★
积分 197
发帖 21
注册 2004-01-09 00:00
22年会员
UID 15212
性别 男
状态 离线
winver是一个32位的程序,好像只windows 98中有(C:\WINDOWS\WINVER.EXE),XP中我没找到。我要的通用性就从谈起。更重要的是,它只是弹出一个窗口,不能将信息导出为批处理所利用。
第 4 楼
发表于 2004-01-18 00:00 · 加拿大 安大略省 多伦多
系统支持
★★★★★★
“新DOS时代”站长
积分 27,736
发帖 10,521
注册 2002-10-09 12:00
23年会员
UID 9
状态 离线
zww3008:如果在纯DOS下运行WINVER的话,是不会弹出窗口的,而是显示Windows的版本号,比如:Windows 98
Wengier - 新DOS时代
欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/
E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

第 5 楼
发表于 2004-01-26 00:00 · 中国 山西 太原 联通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
23年会员
UID 19
性别 男
状态 离线
Re zww3008:
http://model.chinajewelry.net/dos/dosbbs/dispbbs.asp?BoardID=12&ID=8905&replyID=54233&skin=1
※ Batchinger 致 Bat Fans:请访问
批处理编程的异类 ,欢迎交流与共享批处理编程心得!
第 6 楼
发表于 2004-02-03 00:00 · 中国 广东 深圳 鹏博士宽带
初级用户
★
积分 197
发帖 21
注册 2004-01-09 00:00
22年会员
UID 15212
性别 男
状态 离线
呵~过年刚回来!
willsort 兄在5楼介召的都是获取DOS版本信息的方法,我需要的是在windows中运行批处理程序,获取 wibdows 98/Me/2000/XP等等WINDOWS版本信息的方法。不知有没有可行的方法?
第 7 楼
发表于 2004-02-04 00:00 · 中国 山西 运城 联通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
23年会员
UID 19
性别 男
状态 离线
Re zww3008:
经过实际测试,在WIN 98下和WIN XP下得到的都是WINDOWS的版本值,所以我才给你推荐的。
※ Batchinger 致 Bat Fans:请访问
批处理编程的异类 ,欢迎交流与共享批处理编程心得!
第 8 楼
发表于 2004-02-04 00:00 · 中国 广东 深圳 鹏博士宽带
初级用户
★
积分 197
发帖 21
注册 2004-01-09 00:00
22年会员
UID 15212
性别 男
状态 离线
真的可以,真是太神奇了!我经常喜欢搞些程序DIY,这些信息的获取都对我相当有用!
::getvar.bat
@if == prompt set %2=%3
@if == goto end
@echo off
%comspec% /c %0 invoke %1 %2>tt.bat
call tt
:end
只是有些还不太明白,请详细讲解一下:
1. 第二行中的 prompt 是什么?是否指%prompt%变量?如是为什么不用双%号括起来,与后面的set 是不是两个命令写在了一行中,在win98中能直接将两个命令写在一行中吗?%3的获值从何而来?
2. 使用时的命令行 getvar curver $v ,是否curver和$v分别对应“%comspec% /c %0 invoke %1 %2”中的 invoke 和 %1?那%2对应什么?
3. 我向您请教的问题多次遇到 command /c 等的参数问题,但使用 command /?获得的帮助不是很详细,也没找到有关资料,能否详细、全面地对 command 的参数来个介召?
第 9 楼
发表于 2004-02-06 00:00 · 中国 山西 太原 联通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
23年会员
UID 19
性别 男
状态 离线
Re zww3008:
1,prompt是作为内部命令使用的,set仅仅是它的字符串形式的参数,当输出到tt中后,其内容为set curver=当前版本,则set成为内部命令被调用;
2,windows中可以将两个命令在一行中使用,但有一定的局限性,并不适合此处的需求。
http://model.chinajewelry.net/dos/dosbbs/dispbbs.asp?boardID=12&ID=9106
3,参数对应关系如下:
::getvar.bat
此句后执行 @if == prompt set %2=%3 %1为invoke,%2为curver,%3为系统当前版本
@if == goto end
@echo off
此句先执行 %comspec% /c %0 invoke %1 %2>tt.bat %1为curver,%2为$v,invoke为调用子程序的标志字
call tt
4,command的详细用法可以参考我上传的dos帮助文档,链接如下:
http://model.chinajewelry.net/dos/dosbbs/dispbbs.asp?boardID=12&ID=9266
※ Batchinger 致 Bat Fans:请访问
批处理编程的异类 ,欢迎交流与共享批处理编程心得!
论坛跳转: