标题: [系统相关] 批处理怎样判断操作系统的类型? [打印本页]
作者: BatCoder 时间: 2010-9-7 21:26 标题: 批处理怎样判断操作系统的类型?
要求能够判断以下系统:
Win2000
WinXP
Win2003
Vista
Win2008
Win7
作者: TX_kakashi 时间: 2010-9-7 22:10
ver便可
如果要补丁信息的话要读注册表了
作者: BatCoder 时间: 2010-9-7 23:19
原帖由 TX_kakashi 于 2010-9-7 22:10 发表
ver便可
如果要补丁信息的话要读注册表了
遗憾的是,ver不可以,你找几个不同的系统试试就知道了。
作者: terse 时间: 2010-9-8 02:08
下面两个做到不
net config work
systeminfo
作者: hfg1977 时间: 2010-9-8 02:34
先给出个简单的:- ::================= 判断Windows版本 ============================
- ::返回值: isXPlevel=1 XP级别;isXPlevel=2 高于XP级别;isXPlevel=0 低于XP级别
- :isWindowsVer
- ver|findstr "5\.[0-9]\.[0-9][0-9]*">nul&&(set isXPlevel=1&goto:eof)
- ver|findstr "6\.[0-9]\.[0-9][0-9]*">nul&&(set isXPlevel=2&goto:eof)
- set isXPlevel=0
- goto:eof
复制代码
作者: hfg1977 时间: 2010-9-8 02:48
再说一下复杂的:
WindowsOS dwPlatformID dwMajorVersion dwMinorVersion dwBuildNumber
95 1 4 0 950
95 SP1 1 4 0 > 950 && <= 1080
95 OSR2 1 4 < 10 > 1080
98 1 4 10 1998
98 SP1 1 4 10 >1998 && < 2183
98 SE 1 4 10 >= 2183
ME 1 4 90 3000
NT 3.51 2 3 51 1057
NT 4 2 4 0 1381
2000 2 5 0 2195
XP 2 5 1 2600
2003 2 5 2 3790
Vista 2 6 0 6000
Vista SP1/2008 2 6 0 6001
CE 1.0 3 1 0
CE 2.0 3 2 0
CE 2.1 3 2 1
CE 3.0 3 3 0
'Windows 7 6.1 wProductType == VER_NT_WORKSTATION = 1
'Windows Server 2008 R2 6.1 wProductType != VER_NT_WORKSTATION
'Windows Server 2008 6.0 wProductType != VER_NT_WORKSTATION
'Windows Vista 6.0 6 0 wProductType == VER_NT_WORKSTATION
'Windows Server 2003 R2 5.2 GetSystemMetrics(SM_SERVERR2) != 0
'Windows Server 2003 5.2 GetSystemMetrics(SM_SERVERR2) == 0
'dwPlatformId:
'VER_PLATFORM_WIN32s =0 Win32s on Windows 3.1.
'VER_PLATFORM_WIN32_WINDOWS =1 Win32 on Windows 95.
'VER_PLATFORM_WIN32_NT =2 Win32 on Windows NT.
'VER_NT_WORKSTATION =1
'VER_NT_DOMAIN_CONTROLLER =2
'VER_NT_SERVER =3
由上表我们可以看出 VER 命令可以直接判断OS有:
Win2000 /5 .0 可以直接判断
WinXP /5 .1 可以直接判断
Win2003 /5 .2 可以直接判断
Vista /6.0 不能直接判断
'Windows Server 2008 6.0 不能直接判断
Windows Server 2008 R2 6.1 不能直接判断
Win7 6.1 不能直接判断
作者: hfg1977 时间: 2010-9-8 02:57
Vista 2 6 0 6000
Vista SP1/2008 2 6 0 6001
这里可以看到 Vista SP1和2008 的版本号与BuildNumber 完全一样,所以无法用VER命令分别; 但是非sp版本的Vista还是可以判断的.
汗,我只用过XP, 希望有人补充下 各OS BuildNumber !!!!!!!!!!!
作者: ryanliue 时间: 2010-9-8 11:57
Ver、注册表、WMI……方法有好多种。
作者: cjiabing 时间: 2010-9-8 12:51
C:\>for /f "skip=4 tokens=2 delims==/" %a in (c:\boot.ini) do echo %a&pause
作者: BatCoder 时间: 2010-9-8 15:01
原帖由 ryanliue 于 2010-9-8 11:57 发表
Ver、注册表、WMI……方法有好多种。
你用哪种方法实现的?能否学习一下你的代码?
作者: BatCoder 时间: 2010-9-8 15:02
原帖由 cjiabing 于 2010-9-8 12:51 发表
C:\>for /f "skip=4 tokens=2 delims==/" %a in (c:\boot.ini) do echo %a&pause
你没有用过Vista或者Win7系统吧?
作者: Batcher 时间: 2010-9-8 22:24
XP SP3: Microsoft Windows XP [Version 5.1.2600]
Win2003 SP2: Microsoft Windows [Version 5.2.3790]
Win2003 R2 SP2: Microsoft Windows [Version 5.2.3790]
Vista SP2: Microsoft Windows [Version 6.0.6002]
Win7: Microsoft Windows [Version 6.1.7600]
作者: hfg1977 时间: 2010-9-9 00:51
谢谢 Batcher 版主 分享OS BuildNumber .
收藏了!
作者: canyuexiaolang 时间: 2010-9-9 08:06
如果大家知道的话,打开cmd可以看到
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
每个版本的"[版本 5.1.2600]"都不一样
可以获取,然后再判断
由于我家只有win2003和XP,win2000,98,Win7,Win2008都没有
就不写代码了....汗
作者: netbenton 时间: 2010-9-9 13:22
- @echo off
- ver >"%temp%\aaa.tmp"
- findstr /l /g:"%temp%\aaa.tmp" "%0">"%temp%\aaa.bat"
- call "%temp%\aaa.bat"
- echo 当前系统是:%oss%
- pause
- goto :end
-
- 在这里定义好数据:
- set oss=win xp3 & echo XP SP3: Microsoft Windows XP [Version 5.1.2600]
- set oss=win2003 sp2 & echo Win2003 SP2: Microsoft Windows [Version 5.2.3790]
- set oss=Win2003 R2 SP2& echo Win2003 R2 SP2: Microsoft Windows [Version 5.2.3790]
- set oss=win Vista SP2 & echo Vista SP2: Microsoft Windows [Version 6.0.6002]
- set oss=win7 & echo Win7: Microsoft Windows [Version 6.1.7600]
- set oss=win xp3 & echo XP SP3: Microsoft Windows XP [版本 5.1.2600]
-
- :end
复制代码
作者: cjiabing 时间: 2010-9-9 16:39
原帖由 BatCoder 于 2010-9-8 15:02 发表
你没有用过Vista或者Win7系统吧?
————
呵呵,不好意思,钟情于XP,没用过那么先进的!~
作者: lxxx 时间: 2015-7-4 10:45
感觉6楼的代码较实用简洁。
作者: /zhqsystem/zhq 时间: 2015-7-5 23:18
我只能提供win7正式版版本号, 6.1.7600.16385 和 6.1.7601.17514
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |