Board logo

标题: 请教高手,能否用批处理获取Windows的版本信息? [打印本页]

作者: zww3008     时间: 2004-1-16 00:00    标题: 请教高手,能否用批处理获取Windows的版本信息?

经常制作各种批处理程序应用到不同的机上,有时需要对不同的系统进行不同的操作,请问如何用批处理实现获取 windows 的版本信息(要能通用)?
在 windows 中我用安装制作程序 CreatInstall 2000 定义宏从注册表中获取值,可以实现,但在批处理中不知能否实现?
作者: Wengier     时间: 2004-1-16 00:00
DOS下吗?试试WINVER命令。
作者: zww3008     时间: 2004-1-18 00:00
winver是一个32位的程序,好像只windows 98中有(C:\WINDOWS\WINVER.EXE),XP中我没找到。我要的通用性就从谈起。更重要的是,它只是弹出一个窗口,不能将信息导出为批处理所利用。
作者: Wengier     时间: 2004-1-18 00:00
zww3008:如果在纯DOS下运行WINVER的话,是不会弹出窗口的,而是显示Windows的版本号,比如:Windows 98
作者: willsort     时间: 2004-1-26 00:00
Re zww3008:

    http://model.chinajewelry.net/dos/dosbbs/dispbbs.asp?BoardID=12&ID=8905&replyID=54233&skin=1
作者: zww3008     时间: 2004-2-3 00:00
呵~过年刚回来!
willsort 兄在5楼介召的都是获取DOS版本信息的方法,我需要的是在windows中运行批处理程序,获取 wibdows 98/Me/2000/XP等等WINDOWS版本信息的方法。不知有没有可行的方法?
作者: willsort     时间: 2004-2-4 00:00
Re zww3008:

    经过实际测试,在WIN 98下和WIN XP下得到的都是WINDOWS的版本值,所以我才给你推荐的。
作者: zww3008     时间: 2004-2-4 00:00
真的可以,真是太神奇了!我经常喜欢搞些程序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 的参数来个介召?

作者: willsort     时间: 2004-2-6 00:00
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