Display the current operating system version.


A very simple method of version checking is to pipe a version string into FIND, however there is a possibility that something which is a unique string today might match a minor version released in the future e.g. the following would also match 7.6.1

ver | find "6.1" > nul
if %ERRORLEVEL% == 0 goto ver_2008R2

Batch file to find the current operating system version:

@Echo off
For /f "tokens=4,5,6 delims=[]. " %%G in ('ver') Do (set _major=%%G& set _minor=%%H& set _build=%%I) 

Echo Major version: [%_major%]
Echo Minor Version: [%_minor%]
Echo Build: [%_build%]

GOTO sub%_major%-%_minor%
Echo Windows Vista or Windows 2008
goto next
Echo Windows 7 or Windows 2008 R2
goto next
Echo Windows 8 or Windows Server 2012
goto next
Echo Windows 8.1 or Windows Server 2012
goto next
Echo Windows 10 or Windows 2016

List of Windows Version numbers

Windows 1.0 1.04
Windows 2.0 2.11
Windows 3.0 3
Windows 95 4.0.950
Windows XP 5.1.2600
Windows XP Professional x64 Edition 5.2.3790
Windows Home Server 5.2.3790
Windows Server 2003 5.2.3790
Windows Server 2003, Service Pack 1 5.2.3790.1180
Windows Server 2003 5.2.3790.1218
Windows Vista, RTM (Release to Manufacturing) 6.0.6000.16386
Windows Vista 6.0.6000 / Windows Server 2008 6.0.6001
Windows Vista, Service Pack 2 / Server 2008 Sp2 6.0.6002
Windows 7, RTM (Release to Manufacturing) 6.1.7600.16385
Windows 7 6.1.7600
Windows 7, Service Pack 1 6.1.7601
Windows Server 2008 R2, RTM (Release to Manufacturing) 6.1.7600.16385
Windows 8, RTM (Release to Manufacturing) 6.2.9200.16384
Windows 8 6.2.9200
Windows Server 2012 6.2.9200
Windows 8.1 6.3.9600.16384.130821-1623
Windows Server 2012 R2 6.3.9600
Windows 10 Gold 10.0.10240
Windows 10 AU 2016-08-02 10.0.14393
Windows Server 2016 RTM 10.0.14393
Windows Server 2016 AU 2017-03-22 10.0.14393.970
Windows 10 AU 2017-04-11 10.0.16170
See also Wikipedia list of Windows versions

Service Pack Version

This Batch script will return the Service Pack level.

32 bit or 64 bit process detection

The environment variable PROCESSOR_ARCHITECTURE holds the following possible values:

64-bit process: AMD64 or IA64
32-bit process or WOW64 (32bit Program on 64 bit OS): x86

If we are running WOW64 then PROCESSOR_ARCHITEW6432 =AMD64

  // OS is 32bit
  // OS is 64bit

via David Wang @MSFT


If the version was successfully displayed %ERRORLEVEL% = 0
If a bad parameter is given %ERRORLEVEL% = 1
VER /? will not reset the ERRORLEVEL, this is a bug.

VER is an internal command.

“Always be a first-rate version of yourself, instead of a second-rate version of somebody else” ~ Judy Garland


Q190899 - How to Determine the OS Type in a Logon Script
Gettype.exe - Resource Kit
Sigcheck - Check a file version, both OS files and others.
SystemInfo - Return OS, Service pack, BIOS, Memory etc
WINVER.exe - Opens the GUI Version dialogue box (Help, About)
FILEVER - DLL version information (Resource Kit, XP Support tool)
OS version changes in Windows 8.1 and Windows Server 2012 R2
Wikipedia - Timeline of Microsoft Windows
Powershell equivalent: Get-Host
Equivalent bash command (Linux): uname -r - Print system information

Copyright © 1999-2017
Some rights reserved