中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS学习入门 & 精彩文章 (教学室) » 请教高手,能否用批处理获取Windows的版本信息?
作者:
标题: 请教高手,能否用批处理获取Windows的版本信息? 上一主题 | 下一主题
zww3008
初级用户




积分 197
发帖 21
注册 2004-1-9
状态 离线
『楼 主』:  请教高手,能否用批处理获取Windows的版本信息?

经常制作各种批处理程序应用到不同的机上,有时需要对不同的系统进行不同的操作,请问如何用批处理实现获取 windows 的版本信息(要能通用)?
在 windows 中我用安装制作程序 CreatInstall 2000 定义宏从注册表中获取值,可以实现,但在批处理中不知能否实现?

2004-1-16 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


积分 27734
发帖 10521
注册 2002-10-9
状态 离线
『第 2 楼』:  

DOS下吗?试试WINVER命令。



Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

2004-1-16 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (29206679)  编辑帖子  回复  引用回复
zww3008
初级用户




积分 197
发帖 21
注册 2004-1-9
状态 离线
『第 3 楼』:  

winver是一个32位的程序,好像只windows 98中有(C:\WINDOWS\WINVER.EXE),XP中我没找到。我要的通用性就从谈起。更重要的是,它只是弹出一个窗口,不能将信息导出为批处理所利用。

2004-1-18 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


积分 27734
发帖 10521
注册 2002-10-9
状态 离线
『第 4 楼』:  

zww3008:如果在纯DOS下运行WINVER的话,是不会弹出窗口的,而是显示Windows的版本号,比如:Windows 98



Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

2004-1-18 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (29206679)  编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 5 楼』:  

Re zww3008:

    http://model.chinajewelry.net/dos/dosbbs/dispbbs.asp?BoardID=12&ID=8905&replyID=54233&skin=1



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2004-1-26 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zww3008
初级用户




积分 197
发帖 21
注册 2004-1-9
状态 离线
『第 6 楼』:  

呵~过年刚回来!
willsort 兄在5楼介召的都是获取DOS版本信息的方法,我需要的是在windows中运行批处理程序,获取 wibdows 98/Me/2000/XP等等WINDOWS版本信息的方法。不知有没有可行的方法?

2004-2-3 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 7 楼』:  

Re zww3008:

    经过实际测试,在WIN 98下和WIN XP下得到的都是WINDOWS的版本值,所以我才给你推荐的。



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2004-2-4 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zww3008
初级用户




积分 197
发帖 21
注册 2004-1-9
状态 离线
『第 8 楼』:  

真的可以,真是太神奇了!我经常喜欢搞些程序DIY,这些信息的获取都对我相当有用!

  Quote:
::getvar.bat
@if [%1]==[invoke] prompt set %2=%3
@if [%1]==[invoke] 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 的参数来个介召?


2004-2-4 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 9 楼』:  

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 [%1]==[invoke] prompt set %2=%3   %1为invoke,%2为curver,%3为系统当前版本
@if [%1]==[invoke] 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:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2004-2-6 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: