Как определить разрядность Windows из командного файла

Все об администрировании рабочих станций Windows 95/98/NT/2000/XP/7/8. То, чего не найдешь в бескрайних просторах Интернета. Решения тех проблем, которые не решаются типовыми ответами, которые можно получить в техподдержке Майкрософта - а именно: переустановить продукт или купить какой-ть другой лицензионный диск.


Модератор: UncleFather

Аватара пользователя
UncleFather
Site Admin
Сообщения: 1496
Зарегистрирован: 17 авг 2004 16:20, Вт
Контактная информация:

Как определить разрядность Windows из командного файла

Сообщение UncleFather »

Проблема:

Зачастую администраторы пишут универсальные командные файлы (батники, bat- и cmd- файлы) для различных по разрядности версий ОС Microsoft Windows, однако при выполнении этих файлов нужно определять какая именно Windows установлена - 32-х либо 64-х битная.

Решение:

Предлагаю следующее решение для определения разрядности ОС Microsoft Windows в командном файле:

Код: Выделить всё

@echo off
TITLE Windows Version Inspection
Set OSbit=_x86
If Defined PROCESSOR_ARCHITEW6432 (Set OSbit=_x64) Else If "%PROCESSOR_ARCHITECTURE%"=="AMD64" Set OSbit=_x64
Echo %OSbit%

В первой строке батника отключаем вывод команд на экран

Во второй - задаем заголовок окна: «Windows Version Inspection»

Затем присваиваем переменной OSbit значение _x86, имея ввиду что, если в следующей строке результаты проверки 64-х битности ОС будут отрицательными, то наша система будет 32-х битной.

Наконец, в четвертой строке, собственно, выполняем проверку. Сначала проверяем - определена ли в системе переменная «PROCESSOR_ARCHITEW6432» - если ДА, то система 64-х битная, затем, если эта переменная не определена, то проверяем значение системной переменной «PROCESSOR_ARCHITECTURE» и, если эта переменная имеет значение AMD64, то значит наша система 64-х битная.

Итак, после этих проверок используем переменную «OSbit» с полученным значением _x64 если ОС Windows 64-х ,битная и со значением _x86, если ОС 32-х битная.

Здесь же приведу примеры bat-файлов (командных файлов), позволяющих определить установленную версию операционной системы Windows (источник):

При помощи команды «Ver»

Код: Выделить всё

@echo off
set curr_OS=
REM
ver | find /i "5.0"
if %errorlevel% == 0 set curr_OS=Windows 2000
REM
ver | find /i "5.1"
if %errorlevel% == 0 set curr_OS=Windows XP
REM
ver | find /i "5.2.3"
if %errorlevel% == 0 set curr_OS=Windows Server 2003
REM
ver|find /i "6.0"
if %errorlevel% == 0 set curr_OS=Windows Vista
REM
ver | find /i "6.1">nul
if %errorlevel% == 0 set curr_OS=Windows 7
REM
if "%curr_OS%"=="" set curr_OS=Unknown
echo Текущая версия ОС - %curr_OS%

В следующей таблице приведено соответствие номера версии Windows ее отображаемому имени:

Номер версии

Отображаемое имя

Год выхода

3.1

Windows NT 3.1

1993

3.5

Windows NT 3.5

1994

3.51

Windows NT 3.51

1995

4.0

Windows NT 4.0

1996

5.0

Windows 2000

2000

5.1

Windows XP

2001

5.2

Windows XP 64-bit, Windows Server 2003

2003

6.0

Windows Vista, Windows Server 2008

2006, 2008

6.1

Windows 7, Windows Server 2008 R2

2009

6.2

Windows 8, Windows Server 2012

2012

6.3

Windows 8.1, Windows Server 2012 R2

2013

10.0

Windows 10

2015

При помощи команды «NET CONFIG WORKSTATION»

Код: Выделить всё

@echo off
set curr_OS=
REM
net config workstation | find /i "Windows 2000"
if %errorlevel% == 0 set curr_OS=Windows 2000
REM
net config workstation | find /i "Windows 2002"
if %errorlevel% == 0 set curr_OS=Windows XP
REM
net config workstation | find /i "Server 2003"
if %errorlevel% == 0 set curr_OS=Windows Server 2003
REM
net config workstation|find /i "Windows Vista"
if %errorlevel% == 0 set curr_OS=Windows Vista
REM
net config workstation | find /i "Windows 7">nul
if %errorlevel% == 0 set curr_OS=Windows 7
REM Плюс поиск по "Professional"
net config workstation | find /i "Версия программы" | find "Professional"
if errorlevel 0 if not errorlevel 1 set curr_OS=Windows 7 PRO
REM Если версия неизвестна:
if "%curr_OS%"=="" set curr_OS=Unknown
echo %curr_OS%

Alexander A. Manaeff©

Понравилась статья? Будем крайне признательны за репосты в соцсетях! Материально поддержать проект можно здесь

Мои странички:
ВКонтакте
Одноклассники
Youtube
Facebook
Instagram

Изображение
Изображение
Изображение
Изображение

Аватара пользователя
UncleFather
Site Admin
Сообщения: 1496
Зарегистрирован: 17 авг 2004 16:20, Вт
Контактная информация:

Как определить разрядность Windows из скрипта VBS

Сообщение UncleFather »

Та же самая задача, но теперь определяем разрядность из сценария Visual Basic (VB Script) (источник):

Код: Выделить всё

On Error Resume Next 
For Each objOStype in GetObject("winmgmts:").InstancesOf ("Win32_ComputerSystem")
	'WScript.Echo "PC type = " & objOStype.SystemType
	strOSbit = objOStype.SystemType
Next
 
If LCase(strOSbit) = "x86-based pc" Then
	OSbit = "32bit"
End If
If LCase(strOSbit) = "x64-based pc" Then
	OSbit = "64bit"
End If
MsgBox OSbit

Определяем версию операционной системы из сценария Visual Basic (VB Script):

Код: Выделить всё

Set objCollection = GetObject("winmgmts:\\.\root\cimv2").ExecQuery("SELECT Name FROM Win32_OperatingSystem")

For Each objItem In objCollection
	strOS = objItem.Name
Next

'Можно просто показать версию операционной системы:
WScript.Echo strOS

'А можно выполнить действия, в зависимости от версии установленной ОС:
If InStr(1, strOS, " XP ", vbTextCompare) > 0 Then
	WScript.Echo "Выполняем действие для XP."
ElseIF InStr(strOS, " Vista ") > 0 Then
	WScript.Echo "Выполняем действие для Vista."
ElseIF InStr(strOS, " 7 ") > 0 Then
	WScript.Echo "Выполняем действие для 7."
ElseIF InStr(strOS, " 8 ") > 0 Then
	WScript.Echo "Выполняем действие для 8."
ElseIF InStr(strOS, " 8.1 ") > 0 Then
	WScript.Echo "Выполняем действие для 8.1."
ElseIF InStr(strOS, " 10 ") > 0 Then
	WScript.Echo "Выполняем действие для 10."
ElseIF InStr(strOS, " Server 2003 ") > 0 Then
	WScript.Echo "Выполняем действие для 2003 Server."
ElseIF InStr(strOS, " Server 2008 ") > 0 Then
	WScript.Echo "Выполняем действие для 2008 Server."
ElseIF InStr(strOS, " Server 2012 ") > 0 Then
	WScript.Echo "Выполняем действие для 2012 Server."
Else
	WScript.Echo "Выполняем действие для прочих версий."
End If

До кучи выкладываю VBS скрипт, который выводит кучу всяких данных об установленной операционной системе (источник):

Код: Выделить всё

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colOperatingSystems = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem")

For Each objOperatingSystem in colOperatingSystems
Wscript.Echo objOperatingSystem.Caption & " " & _
objOperatingSystem.Version
Next

Set dtmConvertedDate = CreateObject("WbemScripting.SWbemDateTime")

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colOperatingSystems = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem")

For Each objOperatingSystem in colOperatingSystems
Wscript.Echo "Boot Device: " & objOperatingSystem.BootDevice
Wscript.Echo "Build Number: " & objOperatingSystem.BuildNumber
Wscript.Echo "Build Type: " & objOperatingSystem.BuildType
Wscript.Echo "Caption: " & objOperatingSystem.Caption
Wscript.Echo "Code Set: " & objOperatingSystem.CodeSet
Wscript.Echo "Country Code: " & objOperatingSystem.CountryCode
Wscript.Echo "Debug: " & objOperatingSystem.Debug
Wscript.Echo "Encryption Level: " & objOperatingSystem.EncryptionLevel
dtmConvertedDate.Value = objOperatingSystem.InstallDate
dtmInstallDate = dtmConvertedDate.GetVarDate
Wscript.Echo "Install Date: " & dtmInstallDate 
Wscript.Echo "Licensed Users: " & _
objOperatingSystem.NumberOfLicensedUsers
Wscript.Echo "Organization: " & objOperatingSystem.Organization
Wscript.Echo "OS Language: " & objOperatingSystem.OSLanguage
Wscript.Echo "OS Product Suite: " & objOperatingSystem.OSProductSuite
Wscript.Echo "OS Type: " & objOperatingSystem.OSType
Wscript.Echo "Primary: " & objOperatingSystem.Primary
Wscript.Echo "Registered User: " & objOperatingSystem.RegisteredUser
Wscript.Echo "Serial Number: " & objOperatingSystem.SerialNumber
Wscript.Echo "Version: " & objOperatingSystem.Version
Next

Alexander A. Manaeff©

Понравилась статья? Будем крайне признательны за репосты в соцсетях! Материально поддержать проект можно здесь

Мои странички:
ВКонтакте
Одноклассники
Youtube
Facebook
Instagram

Изображение
Изображение
Изображение
Изображение

Ответить