[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
未解决

[系统相关] 批处理怎样判断操作系统的类型?

悬赏金额: 10

要求能够判断以下系统:
Win2000
WinXP
Win2003
Vista
Win2008
Win7


Do All in Command Line

ver便可
如果要补丁信息的话要读注册表了

TOP

原帖由 TX_kakashi 于 2010-9-7 22:10 发表
ver便可
如果要补丁信息的话要读注册表了

遗憾的是,ver不可以,你找几个不同的系统试试就知道了。
Do All in Command Line

TOP

下面两个做到不  
net config work

systeminfo

TOP

先给出个简单的:
  1. ::================= 判断Windows版本 ============================
  2. ::返回值: isXPlevel=1 XP级别;isXPlevel=2 高于XP级别;isXPlevel=0 低于XP级别
  3. :isWindowsVer
  4. ver|findstr "5\.[0-9]\.[0-9][0-9]*">nul&&(set isXPlevel=1&goto:eof)
  5. ver|findstr "6\.[0-9]\.[0-9][0-9]*">nul&&(set isXPlevel=2&goto:eof)
  6. set isXPlevel=0
  7. goto:eof
复制代码

TOP

再说一下复杂的:
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      不能直接判断

TOP

Vista                 2         6                 0                 6000
Vista SP1/2008        2         6                 0                 6001

这里可以看到 Vista SP1和2008   的版本号与BuildNumber 完全一样,所以无法用VER命令分别; 但是非sp版本的Vista还是可以判断的.

汗,我只用过XP, 希望有人补充下 各OS BuildNumber  !!!!!!!!!!!

TOP

Ver、注册表、WMI……方法有好多种。

TOP

C:\>for /f "skip=4 tokens=2 delims==/" %a in   (c:\boot.ini) do echo %a&pause

TOP

原帖由 ryanliue 于 2010-9-8 11:57 发表
Ver、注册表、WMI……方法有好多种。

你用哪种方法实现的?能否学习一下你的代码?
Do All in Command Line

TOP

原帖由 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系统吧?
Do All in Command Line

TOP

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]
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

谢谢 Batcher 版主 分享OS BuildNumber .
收藏了!

TOP

如果大家知道的话,打开cmd可以看到
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.

每个版本的"[版本 5.1.2600]"都不一样

可以获取,然后再判断

由于我家只有win2003和XP,win2000,98,Win7,Win2008都没有
就不写代码了....汗

TOP

  1. @echo off
  2. ver >"%temp%\aaa.tmp"
  3. findstr /l /g:"%temp%\aaa.tmp" "%0">"%temp%\aaa.bat"
  4. call "%temp%\aaa.bat"
  5. echo 当前系统是:%oss%
  6. pause
  7. goto :end
  8. 在这里定义好数据:
  9. set oss=win xp3 & echo XP SP3: Microsoft Windows XP [Version 5.1.2600]
  10. set oss=win2003 sp2 & echo Win2003 SP2: Microsoft Windows [Version 5.2.3790]
  11. set oss=Win2003 R2 SP2& echo Win2003 R2 SP2: Microsoft Windows [Version 5.2.3790]
  12. set oss=win Vista SP2 & echo Vista SP2: Microsoft Windows [Version 6.0.6002]
  13. set oss=win7 & echo Win7: Microsoft Windows [Version 6.1.7600]
  14. set oss=win xp3 & echo XP SP3: Microsoft Windows XP [版本 5.1.2600]
  15. :end
复制代码

TOP

返回列表